1.简介

versions-maven-plugin插件可以管理项目版本,

特别是当Maven工程项目中有大量子模块时,

可以批量修改pom版本号,

插件会把父模块更新到指定版本号,

然后更新子模块版本号与父模块相同,

可以避免手工大量修改和遗漏的问题。

2.使用

2.1.修改版本号

cmd进入Maven工程根目录,运行命令:

mvn -f "pom.xml" versions:set -DoldVersion=* -DnewVersion=1.2.0-SNAPSHOT -DprocessAllModules=true -DallowSnapshots=true -DgenerateBackupPoms=true

修改成功后,全部模块版本号都变成了1.2.0-SNAPSHAOT。

简化版命令:

mvn versions:set -DnewVersion=1.2.0-SNAPSHOT

该命令和上一条命令等价,

个人推荐显示的设置参数,

方便后面修改参数。

2.2.回退版本号

mvn versions:revert

注意设置generateBackupPoms为true(默认值),

才会有pom.xml.versionsBackup备份文件,

否则没有备份文件无法回退版本号。

或者使用版本管理工具提供的撤销功能,

比如git直接回滚到原始版本:

git reset --hard origin/master

2.3.确认修改过的版本号

mvn versions:commit

查看修改后的pom文件,如果没有问题则进行确认,

该命令会删除修改版本号时生成的pom备份文件。

2.4.直接修改版本号,无需确认

设置generateBackupPoms为false,

则直接修改pom,不会生成备份文件,

也就不需要使用commit再次确认,

但是也无法使用revert命令回退版本号。

mvn versions:set -DnewVersion=1.2.0-SNAPSHOT -DgenerateBackupPoms=false

3.参数介绍

参数 默认值 说明
allowSnapshots false 是否更新-snapshot快照版
artifactId ${project.artifactId} 指定artifactId
generateBackupPoms true 是否生成备份文件用于回退版本号
groupId ${project.groupId} 指定groupId
newVersion 设置的新版本号
nextSnapshot false 更新版本号为下一个快照版本号
oldVersion ${project.version} 指定需要更新的版本号可以使用缺省'*'
processAllModules false 是否更新目录下所有模块无论是否声明父子节点
processDependencies true 是否更新依赖其的版本号
processParent true 是否更新父节点的版本号
processPlugins true 是否更新插件中的版本号
processProject true 是否更新模块自身的版本号
removeSnapshot false 移除snapshot快照版本,使之为release稳定版
updateMatchingVersions true 是否更新在子模块中显式指定的匹配版本(如/项目/版本)

更多命令和使用方法,

请参考versions-maven-plugin官网说明。

4.使用技巧

为了更好的使用插件修改版本号,

减少不必要的版本号修改,

推荐Maven工程遵循如下规范:

1.同一项目中所有模块版本保持一致

2.子模块统一继承父模块的版本

3.统一在顶层模块Pom的节中定义所有子模块的依赖版本号,子模块中添加依赖时不要添加版本号

4.开发测试阶段使用SNAPSHOT

5.生产发布使用RELEASE

6.新版本迭代只修改父POM中的版本和子模块依赖的父POM版本

5.参考文章

Versions maven plugin 修改版本
如何使用maven优雅地管理项目版本号
versions-maven-plugin官网

versions-maven-plugin插件批量修改版本号的更多相关文章

  1. Versions maven plugin 修改版本

    使用versions maven plugin插件,批量修改项目各模块的版本号,灵活推进或回退版本,避免主干每次更新代码,立即对所有分支产生影响. https://blog.csdn.net/sunz ...

  2. Maven plugin插件---appassembler-maven-plugin快速配置

    使用appassembler-maven-plugin 打包自定义目录 1.Pom中添加 <plugin> <artifactId>maven-resources-plugin ...

  3. Maven plugin 插件

    1.maven-surefire-plugin简介: Maven在构件时执行到测试的生命周期时,会使用maven-surefire-plugin运行测试用例,背后执行的Junit或者TestNG的测试 ...

  4. eclipse maven plugin 插件 安装 和 配置

      离线插件 点击下载离线安装包:eclipse-maven-plugin.zip ( for eclipse helios or higher ) .解压缩到任意目录(如这里的plugins目录): ...

  5. maven jetty 插件 允许修改 js

    <!--允许修改js,css--> <servlet> <servlet-name>default</servlet-name> <init-pa ...

  6. Spring Boot Maven Plugin(二):run目标

    简介 Spring Boot Maven Plugin插件提供spring boot在maven中的支持.允许你打包可运行的jar包或war包. 插件提供了几个maven目标和Spring Boot ...

  7. Spring Boot Maven Plugin(一):repackage目标

    简介 Spring Boot Maven Plugin插件提供spring boot在maven中的支持.允许你打包可运行的jar包或war包. 插件提供了几个maven目标和Spring Boot ...

  8. jenkins插件Configuration Slicing plugin批量修改配置

    作用 批量修改jenkins上job配置

  9. maven release plugin插件

    1.打包版本区别 SNAPSHOT 快照版本(开发阶段,不稳定,容易出现bug)RELEASE 正式版本(外部依赖使用阶段,稳定,很少出现bug)Tag :标记每次代码提交的版本(比较稳定,类似分支) ...

随机推荐

  1. pop回指定控制器

    //OCNSArray *array = [NSMutableArray new]; array = self.navigationController.viewControllers; //1.返回 ...

  2. 关于form表单提交ajaxForm和ajaxSubmit的用法与区别

    前几天在学习form表单提交时看到这两种方法,这两种方法都是实现form的ajax提交的方法,看了很多资料还是不太明白其用法和区别,最后直接自己写demo,很快就理解,所以说实操是学习的最快捷直接的途 ...

  3. Linux基础命令---put上传ftp文件

    put 使用lftp登录ftp服务器之后,可以使用put指令将文件上传到服务器.   1.语法       put [-E]  [-a]  [-c] [-O base]  lfile  [-o rfi ...

  4. SVN的基本介绍\服务器配置

    ### 1. 工作场景 1. 进入公司需要做的关于开发的第一件事, 就是向项目经理索要SVN服务器地址+用户名+密码### 2. 角色解释> 服务器: 用于存放所有版本的代码,供客户端上传下载更 ...

  5. 3.Vue.js-目录结构

    Vue.js 目录结构 上一章节中我们使用了 npm 安装项目,我们在 IDE(Eclipse.Atom等) 中打开该目录,结构如下所示: 目录解析 目录/文件 说明 build 项目构建(webpa ...

  6. Mybatis读取数据实战

    1.Mybatis基础配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configu ...

  7. 【保姆级教程】Ubuntu18.04+Geforce 980Ti+安装CUDA10.2+Cudnn

    首先感谢师兄的博客!前半部分按照这个照做没有问题! https://www.bilibili.com/read/cv9162965/ 第一步:下载CUDA 在官网下载,查询自己的GPU型号对应的CUD ...

  8. jarvisoj_tell_me_something

    下载文件,首先checksec检查一下保护,发现只开启了NX 堆栈不可执行. 接下来我们拖进IDA看一下程序的主要流程. 很简洁的程序,可以看到read函数存在栈溢出. 再来看看有什么后门函数可以利用 ...

  9. 介绍下Shell中的${}、##和%%使用范例,本文给出了不同情况下得到的结果。

    介绍下Shell中的${}.##和%%使用范例,本文给出了不同情况下得到的结果.假设定义了一个变量为:代码如下:file=/dir1/dir2/dir3/my.file.txt可以用${ }分别替换得 ...

  10. mysql添加上log_bin步骤如下

    mysql添加上log_bin步骤如下