我面临以下问题:我想将mercurial散列集成到我的java项目中。我想把它集成到生成文件(debian包)的名称中,我还想有一个像version.properties这样的文件,在那里我可以访问mercurial散列。
我知道有很多类似的问题,但我通读了一遍,不知怎么的,我无法解决我的问题。
我使用buildnumber maven插件来检索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"确实包含一个月前的旧版本。我不知道该怎么更新。
请,如果有人能帮助我,那就太好了:-)谢谢!
您必须为不想被过滤的资源激活过滤,在这种情况下,这意味着:
<build>
<resources>
<resource>
<directory>src/main/resources/version/</directory>
<filtering>true</filtering>
</resource>
</resources>
...
</build>
如果你的version.properties文件正确地位于src/main/resources/version/下,它将在构建过程中被过滤,并将被复制到target/class/。。。其中应替换占位符。