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

如何用sed/正则/Bash脚本在CI流水线中递增Maven pom.xml版本号?

实现CI流水线自动递增Maven pom.xml版本号

我来分享几个实用的方法,帮你在CI流水线里自动完成Maven pom.xml的版本号递增——毕竟每次手动改版本号不仅麻烦,还容易出疏漏!

先补全你给出的pom.xml示例(方便后续演示):

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>myApp</artifactId>
    <version>1.2.3</version>
    <!-- 其他项目配置 -->
</project>

方案一:使用Maven Versions插件(最推荐)

Maven官方的versions-maven-plugin是专门管理版本号的工具,功能完善,还不会破坏pom.xml的结构,是首选方案。

核心命令

  • 递增补丁版本号(比如1.2.3 → 1.2.4):
    # 自动递增最后一位,同时关闭备份文件生成
    mvn versions:set -DnewVersion=RELEASE -DgenerateBackupPoms=false
    
    或者用更精准的脚本控制:
    # 先获取当前版本,再计算新版本,最后替换
    mvn versions:set -DnewVersion=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout | awk -F. '{print $1"."$2"."$3+1}') -DgenerateBackupPoms=false
    
  • 递增小版本号(比如1.2.3 → 1.3.0):
    mvn versions:set -DnewVersion=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout | awk -F. '{print $1"."$2+1".0"}') -DgenerateBackupPoms=false
    

CI流水线集成步骤

在你的CI脚本里按以下流程执行即可:

  1. 拉取代码后,确保Maven环境已就绪
  2. 执行上述版本递增命令
  3. 提交修改后的pom.xml(记得配置CI的Git权限)
    git config user.name "CI Auto Version Bot"
    git config user.email "ci-bot@yourdomain.com"
    git add pom.xml
    git commit -m "chore: auto-increment version to $(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)"
    git push origin main
    

方案二:用文本处理工具直接修改(轻量替代)

如果你的项目结构简单,不想引入额外插件,可以用sed或awk直接修改pom.xml里的版本号字段,适合x.y.z这种标准格式的版本号。

sed命令示例(适配Linux/macOS)

# 提取当前版本号
CURRENT_VERSION=$(grep -oP '<version>\K[^<]+' pom.xml)
# 计算新的补丁版本号
NEW_VERSION=$(echo $CURRENT_VERSION | awk -F. '{print $1"."$2"."$3+1}')
# 替换pom.xml中的版本号
# macOS需要加''参数,Linux下可省略
sed -i '' "s/<version>$CURRENT_VERSION<\/version>/<version>$NEW_VERSION<\/version>/" pom.xml

注意事项

这种方法依赖pom.xml里<version>标签的格式,如果项目里有多个<version>(比如父模块、依赖版本),很可能会误改,只适合单一版本号的简单项目。

关键注意点

  • 务必关闭pom备份:用-DgenerateBackupPoms=false避免生成pom.xml.versionsBackup冗余文件,防止提交不必要的变更
  • 权限配置:CI需要拥有代码仓库的提交和推送权限,比如在GitHub Actions中配置个人访问令牌,或开启persist-credentials
  • 版本策略统一:提前确定好版本递增规则(补丁/小版本/大版本),避免流水线执行时出现版本混乱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:00:10