tôi đã sử dụng các thuộc tính plugin để giải quyết việc này .
Thuộc tính được xác định trong pom và được ghi vào tệp my.properties, sau đó chúng có thể được truy cập từ mã Java của bạn.
Trong trường hợp của tôi nó là mã kiểm tra mà cần phải truy cập vào tập tin thuộc tính này, vì vậy trong pom các tập tin thuộc tính được ghi vào testOutputDirectory maven của:
<configuration>
<outputFile>${project.build.testOutputDirectory}/my.properties</outputFile>
</configuration>
Sử dụng outputDirectory nếu bạn muốn tính để có thể truy cập bằng cách của bạn mã ứng dụng:
<configuration>
<outputFile>${project.build.outputDirectory}/my.properties</outputFile>
</configuration>
đối với những người tìm kiếm một ví dụ đầy đủ hơn (nó đã cho tôi một chút không quan trọng để làm việc này vì tôi không hiểu làm thế nào đặt tên của thuộc tính thẻ ảnh hưởng đến khả năng lấy chúng ở đâu đó trong tập tin pom), pom của tôi trông như f OLLOWS:
<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>
Và trên dòng lệnh:
mvn clean test -Dapp.env=LOCAL -Dapp.domain=localhost -Dapp.port=9901
Vì vậy, các đặc tính này có thể được truy cập từ mã Java:
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");
Không trực tiếp những gì bạn đang yêu cầu cho nhưng [maven hồ sơ] (http://maven.apache.org/guides/introduction/introduction-to-profiles.html) có thể hữu ích cho số này – Sig
yea Tôi biết về tiểu sử. Tôi đang sử dụng maven-soapui-plugin trong đó trong ... projectFile> là tên đã được xóa của dự án. Tôi có khoảng 10 dự án và tôi không muốn cho mỗi hồ sơ dự án mới. Tôi muốn sử dụng đối số để chạy mvn ... project1 để chạy project1 và mvn ... project2 để chạy project2 –
hudi