访问pom中定义的maven属性

时间:2012-07-16 08:24:09

标签: java maven

如何在普通的maven项目和maven插件项目中访问pom中定义的maven属性?

5 个答案:

答案 0 :(得分:63)

使用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.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>

然后在 .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");

答案 1 :(得分:20)

设置System variable from Maven并在java中使用following call

System.getProperty("Key");

答案 2 :(得分:6)

Maven已经有了解决方案来做你想做的事情:

Get MavenProject from just the POM.xml - pom parser?

btw:首先点击谷歌搜索;)

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

答案 3 :(得分:6)

这可以通过标准java属性与maven-resource-plugin结合使用,并启用属性过滤。

有关详细信息,请参阅http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

这适用于标准maven项目和插件项目

答案 4 :(得分:-3)

您可以使用JDOM(http://www.jdom.org/)解析pom文件。