如何配置jgitver Maven插件让版本号包含Git提交哈希并保留SNAPSHOT标记?
当然可以实现!
jgitver Maven插件提供了高度灵活的版本格式配置能力,完全能满足你想要的带Git短提交哈希的版本号需求,同时保留非标签提交的SNAPSHOT后缀。下面是具体的配置方案:
配置示例
在你的pom.xml中添加或修改jgitver插件的配置,重点通过<versionPatterns>区分标签场景和普通提交场景的版本格式:
<build> <plugins> <plugin> <groupId>fr.brouillard.oss</groupId> <artifactId>jgitver-maven-plugin</artifactId> <version>1.9.0</version> <!-- 建议使用最新稳定版本 --> <executions> <execution> <id>set-project-version</id> <goals> <goal>version</goal> </goals> </execution> </executions> <configuration> <!-- 开启提交哈希的获取,才能使用%commit.short%占位符 --> <useGitCommitId>true</useGitCommitId> <!-- 定义不同场景的版本格式 --> <versionPatterns> <!-- 场景1:当前HEAD在Git标签上时的版本格式 --> <pattern>%version%-%commit.short%</pattern> <!-- 场景2:当前HEAD在普通提交(非标签)时的版本格式 --> <pattern>%version%-%commit.short%-SNAPSHOT</pattern> </versionPatterns> <!-- 可选:如果你的标签格式不是默认的v前缀,可调整tagPattern,比如匹配不带v的标签 --> <!-- <tagPattern>[0-9]+(?:\.[0-9]+)*</tagPattern> --> </configuration> </plugin> </plugins> </build>
配置说明
<useGitCommitId>true</useGitCommitId>:必须开启这个配置,插件才会获取Git提交的哈希值,供%commit.short%占位符使用(%commit.short%对应7位的短哈希)。<versionPatterns>中的两个规则:- 第一个规则会优先匹配当前HEAD处于Git标签上的场景,生成
基础版本-短哈希格式(比如标签v1.0.0对应1.0.0-162ad57)。 - 第二个规则匹配非标签的普通提交场景,jgitver会自动增量版本号后,生成
增量版本-短哈希-SNAPSHOT格式(比如提交后生成1.0.1-ff8cb8a-SNAPSHOT)。
- 第一个规则会优先匹配当前HEAD处于Git标签上的场景,生成
- 默认的标签匹配规则已经支持
v前缀的标签(如v1.0.0),如果你的标签格式不同,可以通过<tagPattern>自定义匹配正则。
验证效果
- 当你的代码处于
v1.0.0标签对应的提交时,执行mvn help:evaluate -Dexpression=project.version -q -DforceStdout,会输出类似1.0.0-162ad57的版本号。 - 当你提交一次代码后(脱离标签),执行同样的命令,会输出类似
1.0.1-ff8cb8a-SNAPSHOT的版本号,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Brixomatic
相关产品推荐
相关产品推荐

