访问在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项目