এটি সমাধানের জন্য আমি বৈশিষ্ট্যগুলি প্লাগইন ব্যবহার করেছি।
বৈশিষ্ট্যগুলি পোমে সংজ্ঞায়িত করা হয় এবং একটি my.properties ফাইলে লিখিত হয়, যেখানে সেগুলি পরে আপনার জাভা কোড থেকে অ্যাক্সেস করা যায়।
আমার ক্ষেত্রে এটি টেস্ট কোড যা এই বৈশিষ্ট্য ফাইলটি অ্যাক্সেস করতে হবে, তাই পমটিতে বৈশিষ্ট্য ফাইলটি মাভেনের টেস্টআউটপুট ডিরেক্টরিতে লেখা হয়:
<configuration>
<outputFile>${project.build.testOutputDirectory}/my.properties</outputFile>
</configuration>
আপনি যদি অ্যাপ্লিকেশন কোড দ্বারা বৈশিষ্ট্যগুলি অ্যাক্সেসযোগ্য হতে চান তবে আউটপুট ডিরেক্টরি ব্যবহার করুন:
<configuration>
<outputFile>${project.build.outputDirectory}/my.properties</outputFile>
</configuration>
যারা পরিপূর্ণ উদাহরণ খুঁজছেন তাদের জন্য (এই কাজটি করতে আমার কিছুটা ম্লান লাগল কারণ সম্পত্তি ট্যাগগুলির নামকরণ কীভাবে পম ফাইলের অন্য কোথা থেকে তাদের পুনরুদ্ধার করার ক্ষমতাকে প্রভাবিত করে), আমার পোমটিকে নিম্নরূপ দেখায়:
<dependencies>
<dependency>
...
</dependency>
</dependencies>
<properties>
<app.env>${app.env}</app.env>
<app.port>${app.port}</app.port>
<app.domain>${app.domain}</app.domain>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>write-project-properties</goal>
</goals>
<configuration>
<outputFile>${project.build.testOutputDirectory}/my.properties</outputFile>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
এবং কমান্ড লাইনে:
mvn clean test -Dapp.env=LOCAL -Dapp.domain=localhost -Dapp.port=9901
সুতরাং এই বৈশিষ্ট্যগুলি জাভা কোড থেকে অ্যাক্সেস করা যেতে পারে:
java.io.InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("my.properties");
java.util.Properties properties = new Properties();
properties.load(inputStream);
appPort = properties.getProperty("app.port");
appDomain = properties.getProperty("app.domain");