java - 将当前的 git commit id 注入(inject) Java webapp

标签 java git ant

我们有一个 git 存储库,其中包含一些相关 Java WAR 和 JAR 的源代码。如果 Java 代码能够以某种方式实现,那就太好了:

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

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

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

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

最佳答案

您可以获得最后一次提交的 SHA

git rev-parse HEAD

但通常使用起来更有用

git describe

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

v0.7.0-185-g83e38c7

如果您有标签,这会起作用 - 它会告诉您当前 checkout 的最后一个有效标签的提交次数加上该提交的部分 SHA,因此您可以使用它作为以后 checkout 的基础。在大多数情况下,您可以像使用 SHA 一样使用此标识符,但它更易于阅读。

关于java - 将当前的 git commit id 注入(inject) Java webapp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1020354/

相关文章:

windows - 如何让 git 停止更改文件中的换行符?

java - Apache ant javah 任务不适用于 jdk 10+

java - Android 中的全局高分教程?

java - 将 "<"和 ">"写入 xml 文件而不是 java 中的 < 和 >

java - Amazon S3 选择问题 : not supporting line break occurring inside fields

git - 如何在离线时快进一个分支

研究环境中的 git 工作流程

java - 使用 Ant 启动的 JUnit-Test 给出了 "ClassNotFoundException"

eclipse - Ant eclipse : package org.apache.log4j does not exist

java - 无法解决 Classnotfound 异常