Java:Maven:在属性文件中获取pom.xml信息(作为版本的mercurial hash)



我面临以下问题:我想将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/。。。其中应替换占位符。

最新更新