李锋镝的博客

  • 首页
  • 时间轴
  • 说说
  • 系列
  • AI工具集
  • 论坛
  • 友圈
    • 友链
    • 朋友圈
    • 游客中心
  • 留言
    • 留言
    • 走心评论
  • 关于
    • 关于本站
    • Now
    • 每日心情
    • 网站地图
    • 网站统计
    • 赞助
  • 星球穿梭
  • 🚇开往
静亦定 动亦定
惟坚韧者始能遂其志
  1. 首页
  2. 原创
  3. 工具
  4. 正文

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

2025年7月10日 193 0 3
本文最后更新于 2025年7月10日,距今已 469 天,其中的信息可能已经发生变化,请注意甄别。

背景

正常来说,修改版本号使用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
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
分享到

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

也可使用浏览器菜单中的「分享」功能

微信扫一扫分享

标签: maven shell 版本
最后更新:2025年7月10日

岁月同一天 10 月 23 日

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

  • 后端
    1 年前 2025年10月23日
    深入解析 localhost 与 127.0.0.1:不止于“本地访问”的技术细节

    在日常开发中,我们总会在浏览器地址栏、配置文件或代码里看到 localhost 和 127.0.0.1 的身影。多数时候…

  • AI
    1 年前 2025年10月23日
    Claude Code提示词优化指南:从"瞎写"到"高效生成",开发效率提升10倍的实战秘籍

    用Claude Code时,你是否常遇到这些问题:生成的代码过时(如用Vue 2写登录组件)、对话久了AI忘记技术栈、复…

  • 技术
    7 年前 2019年10月23日
    Kubernetes(K8s)的Service运行原理

    一、为什么Servcie能定位到Pod 因为Pod的IP是不固定的,所以Kubernetes需要Service,除此之外…

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

李锋镝

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

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

文章评论

  • wbminsLv 1

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

    WindowsWindowsChrome 138.0.0.0Chrome 138.0.0.0中国中国-湖北-武汉
    2025年8月9日
    00 回复
    • 李锋镝博主

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

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

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

    WindowsWindowsChrome 109.0.0.0Chrome 109.0.0.0中国中国-江苏-苏州
    2025年8月2日
    00 回复
  • 既然选择了远方,便只顾风雨兼程。

    听点儿音乐吧 朋友~
    文章目录
    最新 热点 随机
    最新 热点 随机
    php2shell远程执行漏洞修复(CVE-2026-109618 和 CVE-2026-109619) 聊一聊DeepSeek开放自研搜索API这事 Let's Encrypt宣布证书缩短至64天,手动时代彻底终结! Markdown 的前世今生 讨论下XXL-JOB GLUE模式的安全问题 心气没了,干什么都不得劲
    给主题增加了游客中心功能心气没了,干什么都不得劲我觉得是时候公布我的导航网站了游本昌去世关于主题加载速度优化的一点儿小演进给主题增加了Now、每日心情、年度回顾、岁月同一天、随机漫步等功能
    增加了两套复古皮肤-牛皮纸、千禧网页 从"臃肿冗余"到"优雅简洁":那些让Java开发者顿悟的代码艺术与底层逻辑 写了个日期进度条的小插件 MCP深度解析:从协议本质到实战落地,彻底搞懂 AI 工具交互的标准化方案 JAVA开发处理金额的数据类型你知道多少? Kratos+ —— Kratos 主题二次开发记录
    最近评论
    fairy 发布于 2 分钟前(10月23日) 我小站,直接apt update && apt upgrade 就解决了,现在是8....
    李锋镝 发布于 14 小时前(10月22日) 赞!置顶了,让更多人看到~
    秋风于渭水 发布于 14 小时前(10月22日) 会把Docker里的遗漏的,`ps aux | grep php-fpm`直接看有多少对外的 PHP...
    李锋镝 发布于 14 小时前(10月22日) 独立博客还真说不好是不是好事……
    李锋镝 发布于 14 小时前(10月22日) 是啊,搞的人兵荒马乱的
    标签聚合
    Redis Theme JAVA 日常 架构 AI 多线程 IDEA 数据库 ElasticSearch SpringBoot Claude K8s MySQL JVM AI编程 Spring SQL 分布式 WordPress
    友情链接
    • sssr7844的博客
    • 韩小韩博客
    • Mr.Sun的博客
    • 彬红茶日记
    • 刘永博客
    • 皮皮社
    • Honesty
    • 林羽凡
    • 九仞之行
    • lijie blog
    • 搬砖日记
    • 瓦匠个人小站
    • 知向前端
    • 志文工作室
    • Serendipity
    • 懋和道人
    • 韩情脉脉
    • 老张博客
    • 哥斯拉

    COPYRIGHT © 2016-2026 lifengdi.com. ALL RIGHTS RESERVED.

    lifengdi.com 十年之约虫洞

    Domain age badge for lifengdi.com

    Theme Kratos-plus By Dylan Li

    津ICP备2024022503号-3

    京公网安备11011502039375号