Làm cách nào để truy cập các thuộc tính maven được xác định trong pom trong một dự án maven bình thường và trong một dự án plugin maven?
Làm cách nào để truy cập các thuộc tính maven được xác định trong pom trong một dự án maven bình thường và trong một dự án plugin maven?
Câu trả lời:
Sử dụng thuộc tính-maven-plugin để ghi pom cụ thể properties
vào một tệp tại thời điểm biên dịch, sau đó đọc tệp đó tại thời điểm chạy.
Trong pom.xml của bạn :
<properties>
<name>${project.name}</name>
<version>${project.version}</version>
<foo>bar</foo>
</properties>
<build>
<plugins>
<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.outputDirectory}/my.properties</outputFile>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Và sau đó trong .java :
java.io.InputStream is = this.getClass().getResourceAsStream("my.properties");
java.util.Properties p = new Properties();
p.load(is);
String name = p.getProperty("name");
String version = p.getProperty("version");
String foo = p.getProperty("foo");
compile
. Tuy nhiên, không chắc đó có phải là giải pháp thích hợp hay không.
Thiết lập biến Hệ thống từ Maven và trong java sử dụng lệnh gọi sau
System.getProperty("Key");
Điều này có thể được thực hiện với các thuộc tính java tiêu chuẩn kết hợp maven-resource-plugin
với tính năng lọc trên các thuộc tính được bật.
Để biết thêm thông tin, hãy xem http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
Điều này sẽ hoạt động cho dự án maven tiêu chuẩn cũng như cho các dự án plugin
Maven đã có một giải pháp để làm những gì bạn muốn:
Nhận MavenProject chỉ từ trình phân tích cú pháp POM.xml - pom?
btw: lần đầu tiên truy cập vào tìm kiếm của google;)
Model model = null;
FileReader reader = null;
MavenXpp3Reader mavenreader = new MavenXpp3Reader();
try {
reader = new FileReader(pomfile); // <-- pomfile is your pom.xml
model = mavenreader.read(reader);
model.setPomFile(pomfile);
}catch(Exception ex){
// do something better here
ex.printStackTrace()
}
MavenProject project = new MavenProject(model);
project.getProperties() // <-- thats what you need
Bạn có thể phân tích cú pháp tệp pom bằng JDOM (http://www.jdom.org/).