Versions maven plugin 修改版本
代码经过长期修改后,版本号却从没有推进,导致个别release稳定版的模块更新代码之后,其他开发机器并不会自动更新本地依赖包。并使主干针对某分支的修改也同步到其他分支。
所以,此文档描述如何使用versions maven plugin插件,批量修改项目各模块的版本号,灵活推进或回退版本,避免主干每次更新代码,立即对所有分支产生影响。
-
maven环境搭建
-
版本控制
-
参数介绍
-
Versions maven plugin
maven环境搭建
安装maven
安装maven超,总共分四步:
1.下载 Maven ,其实就是一个压缩包,解压一下
2.配置环境变量
有两个环境变量可以配置:
MAVEN_HOME = D:\maven\apache-maven-3.2.3(maven目录)
MAVEN_OPTS = -Xms128m -Xmx512m(可选)
- 1
- 2
3.在path变量末尾加入“%MAVEN_HOME%\bin;”。
以上MAVEN_HOME 是必须要配置的,如果想让 Maven 跑得更快点,可以根据自己的情况来设置 MAVEN_OPTS。
4.最后,验证是否安装成功
打开 cmd,输入:
mvn -v
- 1
我想您一定会看到一些信息,如下图所示:
Maven 安装成功!
版本控制
修改全模块版本号
修改版本的时候,必须规范模块中pom.xml文件的编写,显式声明其父子节点信息(<parent></parent>|<modules></modules>
),需要修改全部模块的版本号为1.0.1-SNAPSHOT,可以在最顶层的根目录,如产品主干在src下,cmd进入根目录,运行命令:
mvn versions:set -DoldVersion=* -DnewVersion=1.0.1-SNAPSHOT -DprocessAllModules=true -DallowSnapshots=true
- 1
修改后输入:
mvn clean install -DskipTests
- 1
Maven开始编译打包,请耐心等待,编译完成后,查看结果是否编译成功:
成功后,输入:
mvn dependency:tree -Dverboss -Dincludes=${project.groupId}:${project.artifactId}
- 1
检查工程的依赖树是否全部依赖了1.0.1-SNAPSHOT的base模块:
如果全部模块版本号都改为了:1.0.1-SNAPSHAOT,即修改成功。
若修改失败,可是使用命令回退版本号:
mvn versions:revert
- 1
若确认版本,可使用命令:
mvn versions:commit
- 1
修改版本所产生的backup文件会自动删除。
修改模块版本
若开需要推进某模块版本号,或有问题需要回退某模块的版本,或者区域分支想更新某模块为新版本,例如修改base模块的版本号为1.0.1-SNAPSHOT,cmd命令行进入模块目录。
运行命令:
mvn versions:set -DnewVersion=1.0.1-SNAPSHOT -DprocessAllModules=true -DallowSnapshots=true
- 1
即可修改该模块及依赖该模块的版本号为1.0.1-SNAPSHOT,其中参数-DallowSnapshots=true,表示允许release版修改为snapshot版。
加上参数-DprocessAllModules=true表示该模块下的子模块及依赖其的版本号都改成1.0.1-SNAPSHOT。
3.3.修改指定模块版本号
如果想修改指定模块的版本号即整个模块中依赖其的版本号,比如groupId:
{artifact}的版本号修改为1.0.2-SNAPSHOT,可以运行命令:
mvn versions:set -DgroupId=${groupId} -DartifactId=${artifact} -DoldVersion=* -DnewVersion=1.0.2-SNAPSHOT -DallowSnapshots=true
- 1
其中,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
- 1
参数介绍
|参数 |默认值 |说明 |
|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
|是否更新在子模块中显式指定的匹配版本(如/项目/版本)。|
Versions maven plugin插件
对于versions maven plugin插件的其他用法可以参考: