You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bamboo中使用pom版本号结合构建编号创建Git标签

Bamboo 配置Maven项目自动打Git版本标签实现方法

核心实现思路

你已经拿到了Bamboo内置构建号变量,只需要把pom.xml里的项目版本号提取为Bamboo可识别的自定义变量,再按规则拼接即可,不要用正则硬解析pom文件,容易匹配错parent、依赖里的version字段,下面是两种可直接落地的方案。


方案1:原生Maven命令提取版本(无额外插件,推荐)

这个方案用Maven官方提供的取值命令,准确率最高,适配所有标准Maven项目:

  • 在源码检出任务之后、Maven构建任务之前,新增一个脚本任务,根据构建代理的操作系统选对应脚本:

    • Linux/macOS 代理执行:
    # 静默提取当前项目的version值
    POM_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
    # 注入为Bamboo全局可用变量,后续所有任务都能通过${bamboo.pom.version}调用
    echo "pom.version=${POM_VERSION}" >> ${bamboo.injectVariablesFile}
    
    • Windows 批处理代理执行:
    @echo off
    for /f "delims=" %%i in ('mvn help:evaluate -Dexpression=project.version -q -DforceStdout') do set POM_VERSION=%%i
    echo pom.version=%POM_VERSION% >> %bamboo.injectVariablesFile%
    

    注意:脚本执行路径默认就是Bamboo检出源码的项目根目录,和pom.xml同路径,不需要额外切换目录,提前确认构建代理已经配置好可用的Maven环境即可。

  • 配置打标签环节:
    不管你用Bamboo自带的「Git 推送标签」内置任务,还是自己写脚本执行git tag、git push命令,标签名直接按规则拼接变量即可:

    ${bamboo.pom.version}.${bamboo.buildNumber}
    

    最终生成的标签就是你要的1.0.1.53格式。


方案2:Maven构建环节直接透传标签值

如果不想额外加脚本任务,可以直接在Maven构建时把拼接好的标签值写入Bamboo变量:

  • 在原有Maven构建任务的「目标」栏,追加参数把拼接好的标签值写入构建属性:
    clean deploy -Dbamboo.build.tag=${project.version}.${bamboo.buildNumber}
    
  • 把Maven任务的变量作用域设置为「跨任务可用」,后续打标签任务直接读取${bamboo.build.tag}即可,不需要额外做版本提取。

常见问题处理

  • 如果你的项目版本带-SNAPSHOT后缀,打出来的标签会是1.0.1-SNAPSHOT.53格式,需要去掉后缀的话,在Linux脚本里加一行替换逻辑就行:
    POM_VERSION=${POM_VERSION/-SNAPSHOT/}
    
  • 提前确认Bamboo配置的Git凭据有仓库推送权限,不然标签只会在本地构建机生成,无法推送到远端仓库。
  • 多模块项目不要在子模块目录执行取值命令,要在根pom所在目录执行,否则拿到的是子模块的版本号。

内容的提问来源于stack exchange,提问作者Peter L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 03:36:17