Maven版本管理的小技巧versionsmavenplugin的使用


在子模块比较多的Maven项目中,无论是项目上线前发release版本,还是稳定之后再次改SNAPSHOT版本进行集中开发,父POM与子Module的版本修改总是需要一个一个将子pom以及子module中的<parent/>内的version修改过来(maven不支持不写version,并且不支持变量引用-maven3.8.1)。最终找到了一个不算完美,但是比较快捷实用的方法:
1.使用插件管理顶级POM与子POM子Module的<parent><version/></parent>的关系
2.使用变量控制子POM与子Module的相互引用
最终达到的效果是,只需要在顶级POM的<version/>中修改当前版本,并同时修改<properties/>中的变量号,执行一次

mvn -N versions:update-child-modules

即可整体设置好新的版本。此时无论是install本地,还是deploy到nexus都是没有版本号问题的。

以三层结构即pom-pom-module的结构为例:
1.首先在顶级pom中加入插件
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.3</version>
<configuration>
<generateBackupPoms>false</generateBackupPoms>
</configuration>
</plugin>
</plugins>
</build>
注意,需要在顶级pom中指定自己的groupId,哪怕父pom中已经有可以继承的groupId.

 


2.子pom中不要单独再指定自己的version
整个父类的version想要直接被插件修改到最底层,需要保持在除顶层外各子层POM和最底层Module.POM的<parent/>中使用version,且不要再单独设置version。
如果在中间层级的pom中设置了单独的version,这个version就会被插件插入到子级的<parent/>中,所以这里只能用常量,一旦用了常量,那么就无法自动地处理这种版本变更。

当然如果只有pom和Module两层就不存在这个问题。

3.对于模块之间的相互引用,使用顶级pom中设置的变量进行统一管理。

 

最终修改顶级版本号和properties中变量,执行mvn -N versions:update-child-modules后的效果:

 

原文地址:https://www.cnblogs.com/bruceChan0018/p/15657270.html