项目一共30个模块,你叫我maven版本一个个手动改?

【工具篇】Maven使用${revision}实现多模块版本统一管理 Maven多模块结构下实现版本统一管理的正确姿势 阅读详情

之前有个群友私聊问我,如何快速统一去更改项目中所有的maven版本号,他说之前都是手动一个个去修改,项目一共有30多个maven模块,上次因为漏改了一个,还造成了生产事故。

其实我自己开源项目有的工程也非常多,有的项目连同测试用例模块也能达到个30,40个之多。以前我都是用全局查找替换来操作的,可后来发现,有的时候无脑全局替换也容易替换错,比如项目的版本是1.2.0,想到替换成1.2.1,但是全局无脑替换的时候,会把一些其他的本来是1.2.0的包的版本号也替换成了1.2.1。所以即便是全局替换,也要一个个再check一遍。

那有没有方便又不容易出错的方法呢?

今天推荐2个小技巧,尤其是第二个,多数人不知道,用完之后,我感觉哪怕有100个模块,都不用慌了。

一

使用versions-maven-plugin这个插件来完成。

首先在你的主pom文件里定义如下maven插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>versions-maven-plugin</artifactId>
            <version>2.3</version>
        </plugin>
    </plugins>
</build>

然后如果你要修改所有模块的版本号,一行命令皆可解决:

mvn versions:set -DnewVersion=1.2.1

如果你后悔更新了,还可以回退:

mvn versions:revert

如果你确定了,则输入提交命令,就完成了:

mvn versions:commit

这种方式修改的,无论你有几个子模块,都可以统一修改。修改后的pom,parent引用,包括子模块之间的引用版本号,都会连同更改的。

是不是特别方便。

二

其实我之前很多项目,都是用以上这个插件来更新子模块版本号的。

但是之前一段时间,有一个贡献者给我的开源项目提了个pr,用了另外一种方式去修改版本号,这种方式我后来看了下,更加的方便。甚至都不用去输入命令!

这种方式的核心思想使用占位符去统一管理。

主pom里是这样定义的:

子模块引用其他子模块版本也是同样定义:

这个${reversion}参数在主pom里定义:

<properties>
        <revision>2.8.5</revision>
</properties>

如果你光这样定义,那么编译是通不过的,你还需要加上一个插件,这个插件的作用是在编译打包时,会自动替换${reversion}占位:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>flatten-maven-plugin</artifactId>
  <version>1.2.7</version>
  <configuration>
    <updatePomFile>true</updatePomFile>
    <flattenMode>resolveCiFriendliesOnly</flattenMode>
  </configuration>
  <executions>
    <execution>
      <id>flatten</id>
      <phase>process-resources</phase>
      <goals>
        <goal>flatten</goal>
      </goals>
    </execution>
    <execution>
      <id>flatten.clean</id>
      <phase>clean</phase>
      <goals>
        <goal>clean</goal>
      </goals>
    </execution>
  </executions>
</plugin>

做好以上这几步,那么你要修改版本号的时候,只需要在主pom里把reversion修改一次就可以了,不管多少子模块,都可以生效。

三

其实在日常开发的过程中,我们总希望摆脱一些机械化,无意义的重复操作,使得自己更加高效的方法。如果你觉得在某一方面浪费了太多的精力,那么一定有更加高效简单的办法来解决。

别再手动改Jar包了!用Maven/Gradle插件自动化管理Aspose.CAD依赖(附21.11版本配置) 本文详细介绍了如何通过Maven和Gradle自动化管理Aspose.CAD依赖,解决手动修改Jar包的低效问题。文章提供了21.11版本的配置示例,包括仓库设置、许可证管理和高级优化技巧,帮助Java开发者提升工程化水平,确保项目构建的一致性和可靠性。 阅读详情

相关推荐

Maven最全使用指南,都在这里了

张三最近做了个项目,但是这个项目需要 30 多个 jar包。他只能从网上一个个去下载,下载完还要一个一个手动导入。 好不容易搞完了,结果却发现有些 jar 包版本竟然不兼容,搞了一天也没搞好。真的是“豆腐拌腐乳-越搞越糊涂!。” 经过一个多月的疯狂加班,这个项目终于做好了,张三部署好测试环境之后就交给测试人员李四了。 张三想着终于能好好摸鱼了,谁知道李四工作特认真,一会就测出来一堆 bug。 张三只能立即去更改 bug,改完还要手动编译、打包项目。最多的时候一天打包了十几次,可把张三累坏了。 那如

SharingOfficer的博客 2225

【Maven】SpringBoot多模块项目利用reversion占位符,进行版本管理.打包时版本号不能识别问题

多模块项目使用reversion点位符进行版管理,打包时生成的pom文件未将。而根据这个版本号去找相应父模块时肯定是找不到的。占位符替换为真实版本号。而当子模块被依赖时,引入的。

朗朗的博客 1544

自从用了这个IDEA插件,新建项目都是一键生成,30秒搞定,太香了!

插件使用Velocity 模板找到插件安装目录(如修改templates/下的.vm文件重启 IDEA,新项目将使用自定义模板✅ 适用场景:统一公司代码规范、添加默认注解、集成日志框架等🚀 快速启动新项目(个人/团队)🧑‍🎓 新人培训标准化环境🏗️ 微服务架构基础脚手架生成📦 统一公司项目结构规范效率对比传统方式:30~60 分钟,甚至一天10 秒从此,你再也不用为“建项目”浪费宝贵开发时间。让重复工作自动化,把精力留给真正有价值的编码!

weixin_44058951的博客 1161

flatten-maven-plugin 的使用

引入 flatten-maven-plugin flatten-maven-plugin 插件的功能就不赘述了,网上也有很多文章描述这一块的内容。以一个 maven 多模块的项目为例,使用的时候直接在项目的父 pom 里加入如下的配置: <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId>

jiaobuchong的专栏 2万+

flatten-maven-plugin:扁平化Maven插件

MojoHaus Flatten Maven插件 这是 。 1.0.x分支: 快速开始 这个插件会生成您pom.xml的扁平版本,并使maven可以安装和部署该版本,而不是原始pom.xml。 <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>flatten-maven-plugin</artifactId> <!--<version>INSERT LATEST VERSION HERE</version>--> <executions> <execution> <goals> <goal>flatten</goal> </goals> </execution> </executions> <configuration> <!--

西门子S7-200 SMART PLC控制伺服电机

以下是使用西门子S7-200 SMART PLC控制伺服电机的详细程序框架和配置说明,涵盖硬件接线、PLC配置和基本运动控制逻辑。具体实现需根据伺服电机型号(如松下、三菱、台达等)调整参数。通过以上步骤,可实现伺服电机的基础位置控制。实际应用需根据设备机械参数和伺服驱动器手册调整细节。建议在调试时逐步测试脉冲输出和方向信号是否正常。

CHUXUEZHE8210的博客 6425

修改ideal中java项目jdk版本,记得收藏

idea修改java项目的jdk版本,可收藏,避免修改不全项目反复报错

m0_55773510的博客 4750

直流无刷减速电机选型指南:从KV值到霍尔传感器,新手必看的5个关键参数

本文详细解析直流无刷减速电机选型的5个关键参数,包括KV值、转矩、电流与功率、减速比选择以及霍尔传感器配置。通过实战案例和避坑策略,帮助工程师精准匹配电机性能与负载需求,提升工业自动化设备的可靠性和效率。特别强调霍尔传感器在精准控制中的关键作用。

alice7model的博客 621

Maven项目中管理依赖的版本?

直接在中声明版本:适用于简单的项目。使用管理版本:适用于多模块项目,可以集中管理依赖版本。使用属性管理版本:减少重复和错误,提高可维护性。结合使用和属性:适用于复杂的多模块项目,既集中管理版本又提高可维护性。合理使用这些方法,可以帮助你更好地管理项目的依赖版本,确保项目的稳定性和可维护性。

qq_33240556的博客 1489

LAMMPS+Phonopy计算声子色散曲线

机器学习训练完势函数之后,需要对加以验证。对于晶体而言,色散曲线是其衡量计算是否准确的最重要标准,当然,还有能量,比热,RDF等性质。

qq_68842798的博客 3462

NVIDIA 2025 Board Design Engineer 校招笔试全解析:从基础门电路到理想放大器设计

本文详细解析了NVIDIA 2025届板级设计工程师校招笔试的核心考点与解题策略。内容涵盖从基础门电路、CMOS实现NOR门,到开关电源CCM/DCM模式波形分析与效率计算,以及理想运放电路设计与稳定性优化。旨在帮助考生构建硬件知识体系,掌握工程思维,顺利通过NVIDIA Board Design Engineer校招笔试。

weixin_29172201的博客 195

SpringBoot(一)、基于Maven构建多模块项目

SpringBoot(一)、基于Maven构建多模块项目 分布式项目搭建规范 规范地搭建微服务项目将有助于应用的开发、维护以及代码的理解。目前应用比较广泛的是基于Maven构建多模块的方式,这种方式搭建的每个模块各司其职,负责应用中不同的功能,同时每个模块采用层级依赖的方式,最终构建成一个聚合型的Maven项目。 本项目将结构划分成了4层,结构如下图。当然,随着实际情况,后续也可按照所需自由划分。 技术选用 jdk1.8 Idea2020 Maven Springboot fastjson lomb

松泥的博客 1947

openEuler在虚拟机的网络配置

ethernet0.virtualDev 可以配置成其他类型的虚拟网络适配器。常见的选项包括:vlance - 用于模拟 AMD PCnet32 LANCE 网络适配器,支持10Mbps。e1000 - 用于模拟 Intel E1000 千兆网络适配器,支持1Gbps。e1000e - 用于模拟更现代的 Intel E1000e 千兆网络适配器。vmxnet - 用于 VMware 的自定义网络适配器,性能更好但需要安装 VMware Tools。

FHY1221的博客 2932

如何创建Maven项目

maven maven是一个构建工具 功能:把编译好的.class文件打包成一个.jar文件 maven的其他功能:依赖管理(一个复杂的程序通常会依赖第三方库) 使用的时候,需要把对应的jar包下载下来,导入工程中 maven不需要安装,idea自带 将maven源改为国内阿里云镜像 maven的路径一般不要改,如果要改,一定不要有中文,也不要带特殊符号 maven如何使用 IDEA在创建项目的时候,选择创建一个maven项目 第一次创建maven的时候,要有耐心,第一次创建可能非常慢(30分钟-几个小

song的博客 2万+

c#上位机最强教程之环境安装

本文介绍了.NET 6开发环境的安装配置指南。主要内容包括:1)安装.NET 6 SDK和Runtime的方法及验证步骤;2)Visual Studio 2022的安装流程;3)创建第一个.NET 6控制台项目;4)项目结构解析和配置文件说明。文章还提供了实践练习和常见问题解答,帮助初学者快速搭建开发环境并运行简单程序。适用于零基础开发者,学习时间约10分钟。

飞上云层 316

基于STM32LXXX的模数转换芯片ADC(TLA2528IRTER)驱动C程序设计

define TLA2528_ADDR 0x12 << 1 // 用于HAL传输的8位地址(写入为0x24,读取为0x25)// 100kHz (示例值,需根据实际时钟计算)#define TLA2528_REG_PIN_CFG 0x00 // 引脚配置寄存器。#define TLA2528_REG_CHN_SEL 0x01 // 通道选择寄存器。

myron6688的博客 230

还在手动搭 Maven 多模块?这款IDEA插件让我效率提升10倍(真实体验)

说实话,做这个插件就是被那些重复到吐的操作逼出来的😂 自己偷偷用了一个月才敢分享给团队,现在已经成了我们项目初始化的"祖传秘方"了。如果你也经常在建项目时浪费半小时以上配置模块,真心推荐你试试这个插件。代码都在GitHub上:对了,这插件我还在慢慢迭代,下一步准备加上Spring Boot版本选择(毕竟现在谁还不用Boot呢)和模块权限模板。你们要是有啥骚想法,欢迎提PR一起折腾!

m0_69632475的博客 946

Amesim应用篇-电芯等效电路模型标定

为了使计算模型更加准确,在有电芯实验测试数据的情况下,依据现有的实验数据对Amesim中的电池等效电路模型进行标定。标定的目的是为了获得更加符合项目实际情况的电芯等效电路模型,标定完的电芯可以用于搭建PACK模型,也可以用于其他虚拟实验。本文以充电标定为例,进行介绍。放电标定与充电一致。

2201_75375391的博客 1213

JGrapht项目中的Maven版本更新问题分析与解决

在Java项目开发中,Maven作为主流的依赖管理工具,其开发版本机制为开发团队提供了极大的便利。然而,JGrapht项目作为一个复杂的图算法库,在使用开发版本时往往会遇到各种意想不到的问题。你是否曾经遇到过以下场景: - 本地构建成功,但CI/CD流水线失败 - 开发依赖突然无法解析 - 版本冲突导致运行时异常 - 缓存问题让依赖更新变得不可预测 本文将深入分析JGrapht项目中Maven...

gitblog_07154的博客 482

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

还在手动搭Maven多模块?这款IDEA插件让我效率提升10倍

说实话,做这个插件就是被那些重复到吐的操作逼出来的😂 自己偷偷用了一个月才敢分享给团队,现在已经成了我们项目初始化的"祖传秘方"了。如果你也经常在建项目时浪费半小时以上配置模块,真心推荐你试试这个插件。代码都在GitHub上:对了,这插件我还在慢慢迭代,下一步准备加上Spring Boot版本选择(毕竟现在谁还不用Boot呢)和模块权限模板。你们要是有啥骚想法,欢迎提PR一起折腾!

jj1245_的博客 881

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Maven项目属性与版本管理

本次将介绍两个内容,分别是:属性、版本管理。如果我们现在想更新Spring的版本,你会发现我们依然需要更新多个jar包的版本,这样的话还是有可能出现漏改导致程序出问题,而且改起来也是比较麻烦。我们需要解决的话,就可以参考变量,声明一个变量,在其他地方使用该变量,当变量的值发生变化后,所有使用变量的地方,就会跟着修改。SNAPSHOT和RELEASE,它们所代表的含义是什么呢?

时代各有不同,青春一脉相承。 840

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

maven版本对应jdk版本的要求

最近在给公司的传统项目做维护,出现了老版本不兼容的问题,特将搜到的答案转载如下: maven http://maven.apache.org/docs/history.html maven版本对应jdk版本的要求 Release Date Version Required Java Version Links 2017-02-28 3.5.0-alpha-1 ...

狂奔的蜗牛 1万+
上一篇: RocketMQ源码解析-topic创建机制
下一篇: 霸道!阿里最新版Spring Cloud Alibaba项目文档,竟将重要组件弃用
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值