将当前 git commit id 注入 Java webapp

2022-09-02 12:29:49

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

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

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

我们正在使用Ant来构建(至少对于生产构建,似乎有些程序员从Eclipse内部进行测试,我对此知之甚少)。

有没有一种规范的方法可以在构建时将当前git签出的提交ID获取到我们的Java中?如果没有,使用Ant构建的人是否可以建议他们如何做到这一点,我们将看看是否会出现一个规范的解决方案?我相信我可以完全用整块布料自己发明一些东西,但这似乎是一个可重用的构建块,所以我宁愿不这样做。


答案 1

您可以使用以下命令获取最后一个提交 SHA

git rev-parse HEAD

但它通常使用起来更有用

git describe

这将为您提供如下所示的内容:

v0.7.0-185-g83e38c7

如果你有标签,这有效 - 它会告诉你当前签出的最后一个有效标签的提交次数加上该提交的部分SHA,所以你可以使用它来建立稍后的签出基础。在大多数情况下,您可以像 SHA 一样使用此标识符,但它的可读性要强得多。


答案 2

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


推荐