Java:Maven:在属性文件中获取pom.xml信息(mercurial hash as version)

时间:2012-03-15 08:57:14

标签: maven properties mercurial version buildnumber-maven-plugin

我面临以下问题:我想将mercurial哈希集成到我的java项目中。我想将它集成到生成文件(debian软件包)的名称中,我还希望有一个像version.properties这样的文件,我可以访问mercurial哈希。

我知道有很多类似的问题,但我通过它们阅读,但不知怎的,我无法解决我的问题。

我使用buildnumber-maven-plugin来检索mercurial哈希。然后我将其集成到版本中。然后,当我运行mvn clean install时,会使用此哈希生成debian包。到目前为止这是正常的。

<version>project-${buildNumber}</version>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>buildnumber-maven-plugin</artifactId>
            <version>1.0</version>
            <executions>
                <execution>
                    <phase>validate</phase>
                    <goals>
                        <goal>create</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

我缺少的是buildNumber.properties文件,该文件应由插件自动生成。我无法在任何地方找到它。所以我决定编写自己的属性文件。我在src/main/resources创建了一个,我在pom.xml中添加了一个属性。以下是片段:

的pom.xml

<properties>
    <merc.version>${buildNumber}</merc.version>
</properties>

version.properties

version=${buildNumber}
version2=${merc.version}

我从cmdl运行mvn clean install。但是当我从less命令行打开我的version.properties文件时,我看到内容是如上所述的纯文本。属性不会被真实内容替换。我只看到version=${buildNumber},依此类推。

此外,应该由maven生成的文件“pom.properties”确实包含一个月前的旧版本。我不明白如何更新它。

如果有人可以帮助我,那就太棒了:-)谢谢!

1 个答案:

答案 0 :(得分:2)

你必须激活filtering for the resources你不想过滤,这意味着:

<build>
 <resources>
    <resource>
      <directory>src/main/resources/version/</directory>
      <filtering>true</filtering>
    </resource>
  </resources>
...
</build>

如果你的version.properties文件正确位于src / main / resources / version /下,它将在构建过程中被过滤,并将被复制到target / class / ...,它应该被替换为占位符。