通过Maven将Mercurial工作目录变更集ID(例如(838cb9c0367e))注入属性文件中?

ben*_*rre 6 versioning mercurial maven buildnumber-maven-plugin

我们使用Maven作为构建版本,使用Mercurial作为我们的变更集.虽然我们的软件已经处理了主要版本,但我们真的希望能够知道Mercurial变更集用于构建运行我们软件的任何服务器.

有没有人知道在Maven中获取Mercurial中工作目录的变更集并将其放入属性文件中的方法,以便我们可以在我们的应用程序中的某个地方显示它,当sys管理员对当前运行的版本进行"健全性检查"时?

Lau*_*lst 6

您可以创建一个更新挂钩,将更改集ID输出到未版本化的.properties文件中:

[hooks]
update = echo changesetid=$HG_PARENT1 > version.properties
Run Code Online (Sandbox Code Playgroud)

这种方法的优点是,如果需要,您可以轻松地自定义此值,并且构建保持独立于版本控制系统(或缺少版本控制系统).

如果你想在生成它的Maven构建中添加一些东西,你有没有看过Buildnumber Maven插件(hgchangeset目标)或Maven Mercurial Build Number插件


she*_*lic 6

合并到你的pom.xml:

<project>
  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>

    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>hgchangeset</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
Run Code Online (Sandbox Code Playgroud)

然后使用设置为的属性创建一个.properties文件.例如:src/main/resources${changeSet}

revision = ${changeSet}
modificationTime = ${changeSetDate}
Run Code Online (Sandbox Code Playgroud)