文章目录

  • 版本控制
    • 修改全模块版本号
    • 修改模块版本
      • 修改指定模块版本号
    • 参数介绍

代码经过长期修改后,版本号却从没有推进,导致个别release稳定版的模块更新代码之后,其他开发机器并不会自动更新本地依赖包。并使主干针对某分支的修改也同步到其他分支。
所以,此文档描述如何使用versions maven plugin插件,批量修改项目各模块的版本号,灵活推进或回退版本,避免主干每次更新代码,立即对所有分支产生影响。

版本控制

修改全模块版本号

修改版本的时候,必须规范模块中pom.xml文件的编写,显式声明其父子节点信息(|),需要修改全部模块的版本号为1.0.1-SNAPSHOT,可以在最顶层的根目录。运行命令:

mvn versions:set -DoldVersion=* -DnewVersion=1.0.1-SNAPSHOT -DprocessAllModules=true -DallowSnapshots=true

修改后输入:

mvn clean install -DskipTests

Maven开始编译打包。
成功后,输入:

mvn dependency:tree -Dverboss -Dincludes=${project.groupId}:${project.artifactId}

检查工程的依赖树是否全部依赖了1.0.1-SNAPSHOT的base模块。
如果全部模块版本号都改为了:1.0.1-SNAPSHAOT,即修改成功。
若修改失败,可是使用命令回退版本号:

mvn versions:revert

若确认版本,可使用命令:

mvn versions:commit

修改版本所产生的backup文件会自动删除。

修改模块版本

若开需要推进某模块版本号,或有问题需要回退某模块的版本,或者区域分支想更新某模块为新版本,例如修改base模块的版本号为1.0.1-SNAPSHOT,运行命令:

mvn versions:set -DnewVersion=1.0.1-SNAPSHOT -DprocessAllModules=true -DallowSnapshots=true

即可修改该模块及依赖该模块的版本号为1.0.1-SNAPSHOT,其中参数-DallowSnapshots=true,表示允许release版修改为snapshot版。
加上参数-DprocessAllModules=true表示该模块下的子模块及依赖其的版本号都改成1.0.1-SNAPSHOT。

修改指定模块版本号

如果想修改指定模块的版本号即整个模块中依赖其的版本号,比如groupId:groupId:{artifact}的版本号修改为1.0.2-SNAPSHOT,可以运行命令:

mvn versions:set -DgroupId=${groupId} -DartifactId=${artifact} -DoldVersion=* -DnewVersion=1.0.2-SNAPSHOT -DallowSnapshots=true

其中,artifactId、groupId和version在maven中形成三维坐标以指定模块,而在这里指定-DgroupId=${groupId} -DartifactId=${artifact}。确定制定修改的模块为${groupId}:${artifact}
如果不希望修改依赖mongodb的模块也修改mongodb的版本号,可以使用参数-DprocessDependencies=false取消依赖其的修改,从而只修改xxx工程的版本号:

mvn versions:set -DgroupId=${groupId} -DartifactId=xxx -DoldVersion=* -DnewVersion=1.0.2-SNAPSHOT -DallowSnapshots=true -DprocessDependencies=false

参数介绍

参数 默认值 说明
allowSnapshots false 是否更新-snapshot快照版
artifactId ${project.artifactId} 指定artifactId
generateBackupPoms true 是否备份pom文件
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 是否更新在子模块中显式指定的匹配版本(如/项目/版本)。

默认情况仅更新groupId,version匹配的,不匹配的不会改变。
更多参考:
http://www.mojohaus.org/versions-maven-plugin/index.html
版权声明:本文为CSDN博主「GGBomb2」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ggbomb2/article/details/78316068

Versions maven plugin 修改版本相关推荐

  1. wro4j和maven plugin在编译期间压缩静态资源

    优化前:  基本上所有的jsp都引用了这一大坨静态文件: <link rel="stylesheet" type="text/css" href=&quo ...

  2. wro4j和maven plugin在编译期间压缩静态资源.

    优化前: 基本上所有的jsp都引用了这一大坨静态文件: <link rel="stylesheet" type="text/css" href=" ...

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

    本文转自:http://www.blogjava.net/fancydeepin/archive/2012/07/13/eclipse_maven3_plugin.html maven3 安装: 安装 ...

  4. Maven多模块版本统一管理

    Maven多模块版本统一管理 问题 在开发一些工具类的时候分了很多模块,类似下图: 每次改动版本号都要手动去更改每一个子模块的版本号,非常的不方便,所以: 解决 Maven官方文档说:自 Maven ...

  5. org.apache.maven.plugin.MojoExecutionException: protoc failure

    build   hadoop 23 真的是千辛万苦,错误贴出来 [ERROR] Failed to execute goal org.apache.hadoop:hadoop-maven-plugin ...

  6. maven pom java版本_Maven更新POM中的JDK版本(比如更新为JDK1.8)

    默认POM如果不指定JDK版本为1.5,而有些项目需要使用泛型这些,就必须使用1.8版本的JDK,所以需要手动修改POM. 打开pom.xml文件修改,增加如下配置节点: [...] [...] or ...

  7. scm maven_在运行时访问工件的Maven和SCM版本

    scm maven 您可以轻松地告诉Maven在JAR清单文件中包含工件的版本及其Git / SVN /-修订版,然后在运行时通过getClass().getPackage访问该信息. getImpl ...

  8. 在运行时访问工件的Maven和SCM版本

    您可以轻松地告诉Maven在JAR清单文件中包含工件的版本及其Git / SVN /-修订版,然后在运行时通过getClass().getPackage访问该信息. getImplementation ...

  9. Spring Boot的Maven插件Spring Boot Maven plugin详解

    pring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven ...

最新文章

  1. Android AM命令行启动程序的方法
  2. forget password of WEBLOGIC user
  3. ASP.NET MVC:会导致锁定的会话
  4. LeetCode 860. 柠檬水找零(贪心)
  5. 什么样的项目是成功的?
  6. 坊间八卦 | 关于 Oracle 中国区裁员的是是非非
  7. 英特尔再曝安全漏洞:黑客可窃取个人电脑中机密数据
  8. POJ 3107 - Godfather
  9. weblogic安装升级配置
  10. ofo之死:一场商业“宫斗剧”下的祭品
  11. 数据结构殷人昆电子版百度云资源_数据结构精讲与习题详解
  12. 一维均值滤波算法matlab,用MATLAB编程实现均值滤波算法?
  13. 机器学习原理与实践(开源图书)-总目录
  14. 计算机cpu在哪,cpu什么意思啊_电脑cpu哪里看
  15. .NET 开发从入门到精通
  16. phabricator 结合 arcanist 使用
  17. linux之lsv—NAT配置
  18. 19款外贸ERP软件大盘点
  19. 从Trimble服务器下载历书
  20. 【机器学习】K-Means 聚类是特殊的矩阵分解问题

热门文章

  1. 网上商城—管理员删除商品
  2. 002-请你回答一下单元测试、集成测试、系统测试、验收测试、回归测试这几步中最重要的是哪一步...
  3. Android Jetpack组件之数据库Room详解(三)
  4. Win10安装华三模拟器各种疑难问题
  5. 使用python读取mysql数据库并进行数据的操作
  6. Windows删除文件时显示找不到该项目 1
  7. 好班微校云信聊天解读记录
  8. 树莓派进阶之路 (014) - 树莓派远程连接的三种方式总结
  9. Bootstrap3插件系列:bootstrap-select2
  10. windows和centos进行文件上传和下载