一行命令同时修改maven项目中多个module的版本号的方法
作者:HollisChuang 发布时间:2023-09-13 09:43:10
标签:maven,module,版本号
Maven,是一个Java开发比较常用的项目管理工具,可以对 Java 项目进行构建、依赖管理。
对于很多Java程序员来说,分层架构都是不陌生的,至少MVC三层架构都是不陌生的,甚至有人说:"Any problem in computer science can be solved by anther layer of indirection."
想要在代码中进行分层,比较好的做法就是创建多module的项目
maven-parent (Maven Project)
|- maven-dao (Maven Module)
|- pom.xml
|- maven-service (Maven Module)
|- pom.xml
|- maven-view (Maven Module)
|- pom.xml
|- pom.xml
以上项目,主要有三个模块,一般通过Maven进行模块间关系的管理。如:
最外层的pom.xml中,定义以下内容:
<modelVersion>4.0.0</modelVersion>
<artifactId>hollis-test</artifactId>
<groupId>com.hollis.lab</groupId>
<name>test</name>
<packaging>pom</packaging>
<version>1.0.0</version>
<modules>
<module>maven-dao</module>
<module>maven-service</module>
<module>maven-view</module>
</modules>
然后在每个子模块中定义以下内容:
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>hollis-test</artifactId>
<groupId>com.hollis.lab</groupId>
<version>1.0.0</version>
</parent>
<artifactId>maven-service</artifactId>
<name>com.hollis.lab</name>
<packaging>jar</packaging>
这样,就形成了一个父子模块的关系。
但是,这样的项目,在版本升级的时候就会比较麻烦,因为要遍历的修改所有pom中的版本号。比如要把1.0.0升级到1.0.1,那么就需要把所有的pom中的version都改掉。
这个人肉修改的过程既繁琐又容易出错,那么有没有什么办法可以代替人肉修改呢?
答案是有的。
一行命令修改所有版本号
maven之所以强大,是因为他有一个牛X的插件机制。我们可以借助一个插件来实现这个功能。
这个插件就是versions-maven-plugin。使用方法也很简单,就是在最外层的pom文件中,增加以下插件配置:
</plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.7</version>
<configuration>
<generateBackupPoms>false</generateBackupPoms>
</configuration>
</plugin>
</plugins>
generateBackupPoms用于配置是否生成备份Pom,用于版本回滚。
配置好插件后,执行命令
mvn versions:set -DnewVersion=1.0.1
即可降以上例子中的所有版本号修改成1.0.1。
为了方便使用,还可以在linux上设置别名,如:
alias mvs='mvs() { mvn versions:set -DnewVersion=$1 }; mvs'
即可使用mvs命令一键修改版本号。
来源:https://juejin.im/post/5cf4778bf265da1bc94ed799


猜你喜欢
- 一、Spring Boot 、 Spring MVC 、Spring对比首先你需要明白一件事情:Spring Boot项目目的并不是替换Sp
- 实现窗口小部件,访问手机储存卡指定目录中的图片文件,然后随机选择一张在窗口的小部件中显示。图片路径使用List存储,适合初级Android学
- 代理模式代理模式(Proxy Pattern)是一种结构性模式。代理模式为一个对象提供了一个替身,以控制对这个对象的访问。即通过代理对象访问
- 如何在原有日期时间上加几个月或几天在原有的时间上添加几个月SimpleDateFormat df = new SimpleDateForma
- 介绍本文实现的功能有:1、播放音乐2、自定义流星数量、飞行速度、光晕大小、流星大小3、自定义表白话语 运用到的知识点有:GUI:j
- 本文实例讲述了java 线程方法join简单用法。分享给大家供大家参考,具体如下:虽然关于讨论线程join方法的博客已经很多了,不过个人感觉
- 1、static关键字1.1 使用static关键字定义属性在讲解static定义属性操作之前,首先编写如下一道程序。现在定义一个表示中国人
- CXF简介CXF是一个开源的WebService框架。Apache CXF = Celtix + XFire,开始叫 Apache Celt
- 首先是main.xml文件代码如下:<LinearLayout xmlns:android="http://schemas.
- private static char[] constant = &
- 由于最近项目忙,博客一直没有时间更新,今天有点时间就连续更新两篇吧,过过瘾。这篇图片拖拽缩放也是我在项目中用到的,今天整理一下,将源码奉献给
- 在C#中,数组由于是固定长度的,所以常常不能满足我们开发的需求。由于这种限制不方便,所以出现了ArrayList。ArrayList、Lis
- 本文实例展示了DevExpress获取TreeList可视区域节点集合的实现方法,是比较有实用价值的技巧。分享给大家供大家参考。具体实现方法
- 当我们在项目中登录使用验证码的时候,不妨试试Kaptcha生成验证码,非常简单1、首先,我们在pom.xml文件中引入kaptcha的mav
- 本文实例为大家分享了AndAndroid实现网页图片浏览的具体代码,供大家参考,具体内容如下基本功能:输入图片的url然后点击按钮加载出来图
- C语言数据结构实现银行模拟实现代码:#include <stdio.h> #include <stdlib.h> #
- Memcached 介绍Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据
- 声明式事务很方便,尤其纯注解模式,仅仅几个注解就能控制事务了思考:这些注解都做了什么?好神奇!@EnableTransactionManag
- 在做商城的项目中,有这么个需求,就是一个产品下有两个价格,一个是市场价,一个是销售价,这时要把市场价添加个删除线;刚开始遇到这个时,在网上找
- Mybatis简介MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software