将当前git commit id注入Java webapp

tia*_*mex 17 java git ant

我们有一个git存储库,其中包含一些相关Java WAR和JAR的源代码.如果Java代码可能以某种方式:

System.err.println("I was built from git commit " + commitID);
Run Code Online (Sandbox Code Playgroud)

(显然,真正的代码可能会将其放入HTTP标头,在启动时记录它,或者其他什么,现在不重要)

我们正在使用Ant来构建(至少对于生产构建,似乎有些程序员在Eclipse内部进行测试,我知道的更少)二进制文件.

有没有一种规范的方法可以在构建时将当前git checkout的提交ID添加到我们的Java中?如果没有,使用Ant构建的人可以建议他们如何做,我们将看看是否出现了规范的解决方案?我确信我可以完全用整块布料来创造一些东西,但这似乎是一个可重复使用的构件,所以我宁愿不这样做.

小智 14

您可以使用最后一次提交SHA

git rev-parse HEAD
Run Code Online (Sandbox Code Playgroud)

但它通常使用起来更有用

git describe
Run Code Online (Sandbox Code Playgroud)

这会给你一些看起来像这样的东西:

v0.7.0-185-g83e38c7
Run Code Online (Sandbox Code Playgroud)

如果您有标签,这将有效 - 它将告诉您当前结账所使用的最后一个有效标签的提交数量加上该提交的部分SHA,因此您可以使用它来支持以后的结账.在大多数情况下,您可以像使用SHA一样使用此标识符,但它更具人性化.

  • 如果你想知道 **'g'** 是什么:_"哈希后缀是 "-g" + 7 个字符的父级提示提交的缩写(即 2414721b194453f058079d897d13c4e377f92dc6)。“g”前缀代表“ git”,用于允许根据管理软件的 SCM 描述软件的版本。这在人们可能使用不同 SCM 的环境中很有用。”_. 来源:https://git-scm.com/docs/git-describe (2认同)

vic*_*ugo 7

我不知道git是否有任何Ant任务(我googled有点没有成功),无论如何Ant可以使用Piotr的选项(git rev-parse HEAD)更新属性文件,然后在运行时使用该属性来获取修订号.这比让Ant生成.java文件更干净,更友好.


smi*_*ace 5

如果它对其他人有帮助。我知道你的是蚂蚁

对于MAVEN构建,您可能可以在pom.xml文件中使用git-commit-id-plugin

    <plugin>
        <groupId>pl.project13.maven</groupId>
        <artifactId>git-commit-id-plugin</artifactId>
        <version>2.2.0</version>
        <executions>
            <execution>
                <goals>
                    <goal>revision</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
            <generateGitPropertiesFile>true</generateGitPropertiesFile>
            <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
        </configuration>
    </plugin>
Run Code Online (Sandbox Code Playgroud)

请通过:
1. http://www.baeldung.com/spring-git-information &
2. https://github.com/ktoso/maven-git-commit-id-plugin了解更多信息。