访问在pom中定义的maven属性
我如何访问在一个正常的Maven项目,以及在Maven插件项目中的POM中定义的Maven属性?
使用properties-maven-plugin
在编译时将特定的pom properties
写入文件,然后在运行时读取该文件。
在你的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>
然后在.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");
从Maven设置一个Systemvariables ,在java中使用以下调用
System.getProperty("Key");
Maven已经有了一个解决scheme来做你想做的事情:
获取MavenProject从POM.xml – POM分析器?
顺便说一句:首先击中谷歌search;)
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
这可以通过标准java属性和maven0-resource-plugin结合使用,并在属性上启用筛选。 更多信息请参阅
http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
这将适用于插件项目的标准maven项目
您可以使用JDOM(http://www.jdom.org/)parsingpom文件。;