注入电流的git提交ID为Java web应用(Injecting current git comm

2019-06-23 17:54发布

我们有一个包含源几个相关的Java WAR和JAR的一个Git仓库。 如果Java代码可以在某种程度上这将是不错:

System.err.println("I was built from git commit " + commitID);

(显然,真正的代码可能把这个放入HTTP头,记录它在启动时,或什么的,那现在这并不重要)

我们使用Ant来构建(至少在产品构建,似乎有些程序员做他们的测试在Eclipse的,我知道更不解的)二进制文件。

有没有一个规范的方式来获得当前的git签入我们的Java在构建时提交ID? 如果没有,可以使用Ant构建人建议他们是如何做到这一点,我们会看到,如果一个典型的解决方案出现? 我敢肯定,我可以创造完全由全棉布自己的东西,但是这似乎是一个可重复使用的构建块,所以我宁愿不要。

Answer 1:

我不知道是否有用于Git任何Ant任务(我用Google搜索了一下没有成功),反正蚂蚁可以更新的属性与彼得的选项(文件git rev-parse HEAD ),然后在运行时使用该属性来获取修订数。 这是更清洁和较有蚂蚁生成一个.java文件IDE友好



Answer 2:

你可以得到最后一次提交的SHA与

git rev-parse HEAD

但它通常是一个更为有用使用

git describe

它会给你的东西,看起来像这样:

v0.7.0-185-g83e38c7

这工作,如果你有标签 - 它会告诉你有多少,从最后的有效标记您的当前结算是在加上那个承诺的部分SHA提交,这样你就可以用它来基地结账关闭后。 你可以使用这个标识就像在大多数情况下一个SHA,但它更可读。



Answer 3:

我写了一个Ant任务来获得使用JGit API(不混帐命令行应用程序)的buildnumber,看到jgit-buildnumber-ANT任务 。 然后,你可以存储MANIFEST.MF文件,这里面buildnumber和运行时类路径中得到它。



Answer 4:

git rev-parse HEAD会打印你可能想要的东西(例如ID HEAD提交)。 你可以让蚂蚁生成一个简单的Java类具有此ID为静态常量。



Answer 5:

首先,你可以使用ident gitattribute用$Id$关键字(尽管它不是可能是你想要的东西;它是文件内容的哈希值,并没有任何与当前的项目版本做)。

其次,你可以做到这一点的方式Linux内核和Git本身做到这一点:在Makefile文件(在你的情况:在Ant文件)有规则,它取代了一些占位符,通常是“@@ VERSION @@”(但在Perl它的情况下,是'++ ++ VERSION')通过的结果GIT-VERSION-GEN ,又使用“ GIT中描述 ”。 但要做到有用,你必须标记你的发行版(使用注解/签订标签)。



Answer 6:

如果它可以帮助别人。 我知道你们是ANT

对于Maven构建,你很可能使用git提交-ID-插件,pom.xml文件

    <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>

请仔细阅读:
1. http://www.baeldung.com/spring-git-information &
2. https://github.com/ktoso/maven-git-commit-id-plugin获取更多信息。



文章来源: Injecting current git commit id into Java webapp
标签: java git ant