我面临以下问题:我想将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”确实包含一个月前的旧版本。我不明白如何更新它。
如果有人可以帮助我,那就太棒了:-)谢谢!
答案 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 / ...,它应该被替换为占位符。