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?Truy cập các thuộc tính maven được xác định trong pom
Trả lời
Bạn có thể phân tích cú pháp tệp pom bằng JDOM (http://www.jdom.org/).
Maven đã có một giải pháp để làm những gì bạn muốn:
Get MavenProject from just the POM.xml - pom parser?
btw: đầu tiên đánh vào google tìm kiếm;)
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
Câu trả lời liên kết đơn không được khuyến khích ở đây (chủ yếu là vì chúng có thể trở thành vô dụng khi tài nguyên được liên kết biến mất). Ít nhất bạn nên tóm tắt thông tin từ liên kết đến bài đăng tại đây. –
Tôi vô tình đăng liên kết sai, một bài đăng trên stackoverflow của nó, điều đó không nên biến mất;) – SWoeste
Nhưng tôi đồng ý với bạn, chỉ một liên kết là một chút khó chịu. Vì vậy, dựa trên các nguồn từ liên kết tôi đã thêm một số ý kiến và phương pháp gọi bạn đang tìm kiếm (dòng cuối cùng). – SWoeste
Điều này có thể được thực hiện với tính chất java tiêu chuẩn kết hợp với maven0-resource-plugin với tính năng lọc được bật trên các thuộc tính. Để biết thêm thông thấy
http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
này sẽ làm việc cho dự án maven tiêu chuẩn như đối với Plugin dự án
Thiết lập một System variable from Maven và sử dụng java following call
System.getProperty("Key");
liên kết bị hỏng, Bạn có thể sửa chữa nó không? –
Sửa lỗi liên kết bị hỏng. – Santosh
Điều này sẽ chỉ hoạt động nếu bạn đang chạy kết quả xây dựng từ Maven, có lẽ bằng cách sử dụng maven-exec-plugin. Nếu bạn chỉ sử dụng Maven để biên dịch mã, điều này sẽ không hoạt động. –
Sử dụng properties-maven-plugin để viết ra cụ thể pom properties
vào một tệp tại thời gian biên dịch, và sau đó đọc tệp đó tại thời gian chạy.
Trong bạn pom.xml:
<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-alpha-2</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");
Điều đó làm việc, nhưng làm cho Eclipse rơi vào ** vòng lặp build/deploy-to-Tomcat vô hạn ** (build -> tạo my.properties -> resource changed -> build), vì vậy tôi phải thay đổi phase thành 'compile'. Không chắc chắn nếu nó là giải pháp thích hợp mặc dù. –
@atoregozh đề xuất sử dụng Tài nguyên của ổi thay vì tải tệp thuộc tính. ĐƯỢC. Nhưng hoàn nguyên thay đổi để giữ cho ví dụ này tối thiểu với API chuẩn. –
- 1. cách thoát '&' trong các giá trị thuộc tính maven pom
- 2. Các thuộc tính kế thừa Maven từ cha mẹ POM
- 3. xuất tất cả các thuộc tính dự án maven được xác định thành tệp?
- 4. Thuộc tính truy cập được xác định trong Đăng nhập theo chương trình
- 5. Truy cập vào thuộc tính chưa được xác định trong JavaScript
- 6. tính Reading nộp từ Maven POM nộp
- 7. Xác định cấu hình maven bên ngoài POM
- 8. Thuộc tính Maven trong dự án nhiều mô-đun được đặt lại về mặc định
- 9. GWT ImageResource được truy cập trong thuộc tính CSS?
- 10. Repository cho maven cắm phụ thuộc quy định tại pom không được sử dụng
- 11. maven loại trừ plugin được xác định trong phụ huynh pom
- 12. Tải ứng dụng Play/SBT phụ thuộc vào Maven POM
- 13. Đối tượng hiển thị các thuộc tính nhưng truy cập chúng trả về không xác định
- 14. Làm cách nào để xác định và đặt thuộc tính môi trường bị thiếu trong Maven?
- 15. Thiết lập phụ thuộc thư viện Tomcat trong maven POM
- 16. Làm thế nào để truy cập các biến môi trường linux từ maven pom?
- 17. Truy cập thuộc tính masterpage từ usercontrol
- 18. Truy cập HTML thuộc tính trong Nokogiri
- 19. Maven POM-Editor: Biểu đồ phụ thuộc thiếu
- 20. Ghi đè thuộc tính mô-đun từ POM mẹ trong Maven
- 21. Truy cập các tệp thuộc tính bên ngoài .jar?
- 22. Maven Super POM
- 23. Cách truy cập động các thuộc tính lớp trong Python?
- 24. Làm cách nào tôi có thể truy cập vào Maven Artifact POM bằng cách sử dụng Java API của Maven?
- 25. Không thể truy cập attr_accessor biến được xác định
- 26. Truy cập các thuộc tính mô hình trong Rails
- 27. Truy cập các thuộc tính tĩnh trong Sencha Touch
- 28. JSON bằng Flex. "Truy cập thuộc tính không xác định JSON"
- 29. Xác định xem thể hiện MethodInfo có phải là trình truy cập thuộc tính
- 30. groovy: Cách truy cập tệp thuộc tính?
Những loại thông tin nào khiến bạn quan tâm? Nếu nó chỉ là phiên bản hoặc những thứ tương tự, thì có thể là một ý tưởng hay hơn để [đặt nó vào tệp kê khai và đọc nó từ đó] (http://stackoverflow.com/questions/2712970/how-to-get-maven-artifact- phiên bản-thời gian chạy/2713013 # 2713013). –
Có rất nhiều bài đăng trong Stack Overflow về điều này: http://stackoverflow.com/search?q=read+pom+in+java, ít nhất, hãy xem trước khi đăng bài. Người chỉnh sửa SO sẽ hiển thị chúng. Google cũng thế. –
Xin cảm ơn các bạn. Bây giờ tôi nhận ra điều này thực sự tồi tệ. Gonna thử cách tiếp cận khác. –