如何使用GitHub Release版本号作为JAR版本发布到GitHub Packages
问题根因
Maven打包、发布时默认读取pom.xml中硬编码的<version>配置值,你的GitHub Action流程没有在构建前将Release的标签版本同步到pom.xml中,所以最终发布的包版本还是本地写死的0.0.1-SNAPSHOT。
解决方案
核心思路是在GitHub Action的构建流程中,自动提取Release标签的版本号,动态替换pom.xml中的版本配置后再执行发布操作,具体步骤如下:
步骤1:提取Release版本号
GitHub Release触发Action时,标签值会存储在GITHUB_REF_NAME环境变量中,你可以通过如下命令去掉标签前缀的v,拿到纯版本号:
- name: 提取Release版本号 id: get_version run: echo "VERSION=${GITHUB_REF_NAME#v}" >> $GITHUB_OUTPUT
后续步骤可以通过${{ steps.get_version.outputs.VERSION }}调用提取到的版本号,比如标签为v1.0.0时,拿到的版本号就是1.0.0。
步骤2:动态更新pom.xml版本
使用Maven自带的versions插件,无需手动修改代码即可替换pom.xml中的版本配置:
- name: 更新项目版本号 run: mvn versions:set -DnewVersion=${{ steps.get_version.outputs.VERSION }}
步骤3:执行打包发布
后续执行你原本的Maven打包、发布命令即可,此时构建出的JAR包版本就会和Release标签版本完全一致。
额外注意事项
- 本地开发环境的
pom.xml无需手动修改版本号,保持0.0.1-SNAPSHOT即可,所有版本替换操作都在CI流程中自动完成,不会影响日常开发 - 如果你的Release标签没有
v前缀,直接去掉版本号提取步骤中的#v参数,直接使用${GITHUB_REF_NAME}作为版本号即可 - 如果你不希望versions插件生成
pom.xml.versionsBackup备份文件,可以在执行versions:set命令时添加-DgenerateBackupPoms=false参数
内容的提问来源于stack exchange,提问作者Manoj ahirwar
相关产品推荐
相关产品推荐

