李锋镝的博客

  • 首页
  • 时间轴
  • 说说
  • 左邻右舍
  • 博友圈
  • 关于我
    • 关于我
    • 另一个网站
    • 我的导航站
    • 网站地图
    • 赞助
  • 留言
  • 走心评论
  • 系列文章
  • Now
  • 每日心情
  • 🚇开往
Destiny
自是人生长恨水长东
  1. 首页
  2. 原创
  3. 工具
  4. 正文

使用shell脚本统一修改maven项目的版本

2025年7月10日 约 321 字2 分钟 397点热度 0人点赞 3条评论
本文最后更新于 2025年7月10日,距今已 376 天,其中的信息可能已经发生变化,请注意甄别。

背景

正常来说,修改版本号使用mvn versions:set -DnewVersion=1.2.3-SNAPSHOT命令即可,不过貌似本地环境有问题,使用命令一直失败,所以想着搞一个通用的、不依赖maven的脚本。

脚本

完整脚本如下:

#!/bin/bash

NEW_VERSION="1.2.3-SNAPSHOT"
ROOT_POM="pom.xml"
# 获取所有 module 的 pom.xml 文件路径(排除根目录)
MODULES=$(find . -mindepth 2 -name "pom.xml")
PROJECT_DIR=$(pwd)

# 函数:仅修改非 <parent> 块内的 <version>
update_version() {
  local FILE="$1"
  local NEW_VERSION="$2"
  local UPDATE_PARENT="$3"

  local TMP_FILE=$(mktemp)
  local IN_PARENT=false
  local IN_DEPENDENCIES=false

  while IFS= read -r LINE || [[ -n "$LINE" ]]; do
    # 判断是否进入/离开 parent 或 dependencies 块
    if [[ "$LINE" == *"<parent>"* ]]; then
      IN_PARENT=true
    elif [[ "$LINE" == *"</parent>"* ]]; then
      IN_PARENT=false
    elif [[ "$LINE" == *"<dependencies>"* ]]; then
      IN_DEPENDENCIES=true
    elif [[ "$LINE" == *"</dependencies>"* ]]; then
      IN_DEPENDENCIES=false
    fi

    if [[ "$LINE" == *"<version>"* && "$IN_PARENT" == "$UPDATE_PARENT" && "$IN_DEPENDENCIES" == "false" ]]; then
      LINE=$(echo "$LINE" | sed -E 's|<version>[^<]*</version>|<version>'"$NEW_VERSION"'</version>|')
    fi

    echo "$LINE" >> "$TMP_FILE"
  done < "$FILE"

  mv "$TMP_FILE" "$FILE"
}

# 更新根项目版本
echo "正在更新根项目版本: $ROOT_POM"
update_version "$ROOT_POM" "$NEW_VERSION" false

# 循环更新每个模块中的version
for MODULE in $MODULES; do
  if [ "$MODULE" != "$ROOT_POM" ]; then
    echo "正在更新模块版本: $MODULE"
    update_version "$MODULE" "$NEW_VERSION" true
  fi
done

echo "版本更新完成,新版本为: $NEW_VERSION"

使用方法

保存为update_version.sh并赋予执行权限:

chmod +x update_version.sh
./update_version.sh 1.2.3-SNAPSHOT
除非注明,否则均为李锋镝的博客原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.lifengdi.com/article/tool/4491

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: maven shell 版本
最后更新:2025年7月10日

岁月同一天 7 月 22 日

回望过去的今天,你在写什么

  • 4 年前 2022年7月22日
    笑死、腹肌……根本不可能有腹肌的~~

    前段时间,朋友推荐了“腹肌撕裂者”,最近跟着练了两天,感觉肚子已经不是自己的了…… :douyin.20:  难道这就是…

相关文章
  • maven依赖本地jar包2025年3月28日
  • Maven发布本地项目的jar包和源码到私有仓库(maven-source-plugin的简单使用)2020年5月25日
  • 解决idea中可以成功执行maven命令但是通过Terminal命令行执行失败的问题2025年7月23日
  • IDEA版本2020.*全局MAVEN配置2021年9月2日

李锋镝

既然选择了远方,便只顾风雨兼程。

打赏 点赞
< 上一篇
下一篇 >
1234567891112131415161718192021222324252627282930313233343536373839404142434446474849505152535455575859606162636465666769727476777879808182858687909293949596979899
取消回复
…

文章评论

  • wbminsLv 1

    大佬这个博客是什么搭建的呀,用的什么主题呢?wordpress么

    WindowsChrome 138.0.0.0 中国-武汉市
    2025年8月9日
    00 回复
    • 李锋镝管理

      @wbmins 是WordPress,主题是Kratos,然后自己修改了些样式。

      WindowsChrome 137.0.0.0 中国-北京市
      2025年8月9日
      00 回复
  • 信息发布Lv 1

    文章写得不错,怎么不继续了

    WindowsChrome 109.0.0.0 中国-苏州市
    2025年8月2日
    00 回复
  • 试问岭南应不好,却道:此心安处是吾乡。

    听点儿音乐吧 朋友~
    文章目录

    那年今日(07月21日)

    • 1998年:美国太空人艾伦·谢泼德逝世
    • 1970年:埃及阿斯旺水坝竣工
    • 1899年:美国“迷惘的一代”代表作家海明威诞生
    • 1816年:路透社创办人路透出生
    • 1796年:苏格兰诗人罗伯特·彭斯逝世,他的诗歌歌颂了故国家乡的秀美
    • 更多历史事件
    最新 热点 随机
    最新 热点 随机
    给主题增加了Now、每日心情、年度回顾、岁月同一天、随机漫步等功能 增加了两套复古皮肤-牛皮纸、千禧网页 Claude Design介绍与使用 Kratos+主题新功能介绍 Taste Skill 说明与使用 jasypt-spring-boot 使用说明
    AI时代,个人技术博客的出路在哪里?这个域名注册整整十年了,十年时间,真快啊WordPress实现用户评论等级排行榜插件WordPress网站换了个字体,差点儿把样式换崩了做了一个WordPress文章热力图插件千万级大表新增字段实战指南:告别锁表与业务中断
    关于8月29号下午博客故障的一些记录 深度拆解 MemGen:Agent 生成式隐式记忆框架的原理、源码与实战 服务器差点被一群垃圾爬虫搞挂了 RocketMQ入门级教程 org.apache.ibatis.plugin.Interceptor类详细介绍及使用 在微服务中使用领域事件
    最近评论
    Huo 发布于 9 小时前(07月21日) 好看 尤其这登录页太漂亮了
    李锋镝 发布于 10 小时前(07月21日) 确实不错,有需要的可以尝试一下
    李锋镝 发布于 11 小时前(07月21日) 要不现在大家都喜欢搞复古主题~你一说电子书,倒是给我一个点子,可以搞个电子书风格的皮肤~
    李锋镝 发布于 11 小时前(07月21日) 二开的,哈哈哈,主要是这个主题布局挺好的
    Hary 发布于 11 小时前(07月21日) 不得不说,复古主题看着还是舒服,就跟以前看电子书似的。
    标签聚合
    Redis JVM Spring SpringBoot 设计模式 AI编程 K8s JAVA AI docker 日常 MySQL 多线程 ElasticSearch SQL 分布式 数据库 架构 WordPress IDEA
    友情链接
    • 风渡言
    • 瓦匠个人小站
    • 志文工作室
    • 林羽凡
    • 韩小韩博客
    • 旧时繁华
    • 皮皮社
    • 拾趣博客导航
    • 知向前端
    • Blogs·CN
    • Mr.Sun的博客
    • 老张博客
    • 搬砖日记
    • 韩情脉脉
    • Honesty
    • 彬红茶日记
    • 懋和道人
    • 哥斯拉
    • 临窗旋墨

    COPYRIGHT © 2026 lifengdi.com. ALL RIGHTS RESERVED.

    域名年龄

    Theme Kratos+ By Dylan Li

    津ICP备2024022503号-3

    京公网安备11011502039375号