实现这一目标的一种方法是使用git-commit-id-plugin。将其添加到pom.xml部分的插件列表中:build
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>${git-commit-id-plugin.version}</version>
<executions>
<execution>
<id>get-the-git-infos</id>
<goals>
<goal>revision</goal>
</goals>
<phase>validate</phase>
</execution>
</executions>
<configuration>
<dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
</configuration>
</plugin>
请注意,我已将阶段更改为 ,因此在打包项目时,修订版号属性已可用。validate
然后,将以下内容添加到该部分:build
<build>
<finalName>${project.artifactId}-${project.version}-${git.commit.id.describe-short}</finalName>
<!-- your list of plugins -->
</build>
该属性由 .它包含当前的 git 修订版号(缩短为 7 位数字)和一个可选指示器。git.commit.id.describe-short
git-commit-id-plugin
dirty
生成的工件将如下所示:(或者如果您的存储库上有未提交的更改)。examplelib-1.0.2-efae3b9.jar
examplelib-1.0.2-efae3b9-dirty.jar
此外,您可能还希望将此信息放入清单。您的工件的MF。在这种情况下,将其添加到您的插件列表中(该示例假设工件是):jar
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestEntries>
<SCM-Revision>${git.commit.id.describe-short}</SCM-Revision>
</manifestEntries>
</archive>
</configuration>
</plugin>
附加说明:
我已经展示了.在他们的网站上,您可能会找到更多选项和属性。除了可以在pom.xml中使用的属性之外,该插件还可以生成包含有关修订版本信息的属性文件。
git-commit-id-plugin
作为 的替代方法,您可能更喜欢 buildnumber-maven-plugin。为了获得修订版号,此插件需要一个SCM插件,该插件也在pom.xml中配置。
git-commit-id-plugin
此设置可能会干扰转换或重命名工件的其他插件(在我的情况下,它是maven-shade-插件 - 它生成的源jar之一不包含正确的修订版号)。
上述被接受的答案对我不起作用。我发现链接 https://dzone.com/articles/maven-git-commit-id-plugin,从我复制下面的插件代码。它第一次为我工作。我现在已将 git.properties 文件自动包含在目标 JAR 文件中。对于跟踪非常有用。
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>2.2.4</version>
<executions>
<execution>
<id>get-the-git-infos</id>
<goals>
<goal>revision</goal>
</goals>
</execution>
</executions>
<configuration>
<dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
<prefix>git</prefix>
<verbose>false</verbose>
<generateGitPropertiesFile>true</generateGitPropertiesFile>
<generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
<format>json</format>
<gitDescribe>
<skip>false</skip>
<always>false</always>
<dirty>-dirty</dirty>
</gitDescribe>
</configuration>
将 finalName 添加到构建部分,以便在目标文件名中也包含版本
<build>
<finalName>${project.artifactId}-${project.version}-${git.commit.id.describe-short}</finalName>
...
</build>
-
如何使用Java中的RESTful Web服务获取远程/客户端IP地址? 我已经在我的项目中编写了Rest Web服务。Web服务调用可能来自不同 machine.so 我需要通过REST Web服务找出IP地址。 从这个请求.getRemoteAddr()使用这个。 但是我不能使用getRemoteAddr()。因为我的请
-
从包含大量文件的zip文件中提取1文件的最快方法是什么? 我尝试了但它们也缺少一些东西。 LZMA SDK不提供一种如何使用的文档/教程,这非常令人沮丧。没有 javadoc。 虽然7z jbinding没有提供一种简单的方法来只提取1个文件,但是,它只提供了提取zip文件
-
输入/输出流在销毁时是否关闭? Java 中的 InputStreams 和 OutputStreams 是否在销毁时关闭()?我完全理解这可能是不好的形式(特别是在C和C++世界中),但我很好奇。 另外,假设我有以下代码: 无名的FileInputStream是否在p.load
-
Java 程序中的字符串大小是否有任何限制? 我有一个字符串定义为 字符串 xx 我可以分配的字符数是否有任何限制? 2) 我正在将用户输入分配给此字符串 xx。70%的人只说一个字。有时他们给出一个大句子,所以想知道可
-