1

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

我知道有很多类似的问题,但我通读了它们,不知何故我无法解决我的问题。

我使用 buildnumber-maven-plugin 来检索 mercurial 哈希。然后我将它集成到版本中。然后在我运行时使用此哈希生成 debian 包mvn clean installThis is working so far。

<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=${buildNumber}
version2=${merc.version}

然后我mvn clean install从 cmdl 运行。但是当我从命令行打开我的 version.properties 文件时less,我看到的内容是上面写的纯文本。属性不会替换为真实内容。我只看到version=${buildNumber},等等。

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

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

4

1 回答 1

2

在这种情况下,您必须为不想被过滤的资源激活过滤,这意味着:

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

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

于 2012-03-15T09:20:23.053 回答