Maven多模块实现统一版本管理
在使用Maven多模块结构工程时,配置版本号是一个比较头疼的事。继承版本、依赖版本、自身版本都需要单独定义,很是麻烦。比如在微服务系统中,所有服务都依赖一个包,里面进行版本管理。每个服务的version版本管理却是单独使用一个版本号。然后我们在版本快速迭代中,通常是要不断地切换version,当服务众多的时候,修改起版本来就很麻烦。
Maven官方文档说:自 Maven 3.5.0-beta-1 开始,可以使用 ${revision}, ${sha1} and/or ${changelist} 这样的变量作为版本占位符。
命令
mvn clean install versions:set -DnewVersion=2.0.2
单模块项目
-
<project>
-
<modelVersion>4.0.0</modelVersion>
-
<groupId>com.xh</groupId>
-
<artifactId>personal-platform</artifactId>
-
<version>${project.build.version}</version>
-
...
-
<properties>
-
<project.build.version>2.0.3</project.build.version>
-
</properties>
-
-
</project>
这种情况比较简单,只使用了 ${project.build.version} 来替换版本。
多模块项目
现在来看看多模块构建的情况,有一个父项目和一个或多子模块。
父pom
-
<project>
-
<modelVersion>4.0.0</modelVersion>
-
<groupId>com.xh</groupId>
-
<artifactId>personal-platform</artifactId>
-
<packaging>pom</packaging>
-
<version>${project.build.version}</version>
-
-
...
-
<properties>
-
<project.build.version>2.0.3</project.build.version>
-
</properties>
-
-
<modules>
-
<module>commons-center</module>
-
</modules>
-
</project>
子pom
-
<project>
-
<parent>
-
<artifactId>personal-platform</artifactId>
-
<groupId>com.anchnet</groupId>
-
<version>${project.build.version}</version>
-
</parent>
-
-
<modelVersion>4.0.0</modelVersion>
-
<artifactId>commons-center</artifactId>
-
<packaging>pom</packaging>
-
-
</project>
多模块项目中子模块的版本应该使用父工程的版本,单独设置版本的话会导致版本混乱。
打包
package、install、deploy
如果使用以上设置来发布,必须使用 flatten-maven-plugin
-
<build>
-
<plugins>
-
<plugin>
-
<groupId>org.codehaus.mojo</groupId>
-
<artifactId>flatten-maven-plugin</artifactId>
-
<version>1.3.0</version>
-
<configuration>
-
<!--true:更新pom文件,不然无法更新module里的pom版本号,此处还有更高级的用法,具体参靠官方文档-->
-
<updatePomFile>true</updatePomFile>
-
<flattenMode>resolveCiFriendliesOnly</flattenMode>
-
</configuration>
-
<executions>
-
<execution>
-
<id>flatten</id>
-
<phase>process-resources</phase>
-
<goals>
-
<goal>flatten</goal>
-
</goals>
-
</execution>
-
<execution>
-
<id>flatten.clean</id>
-
<phase>clean</phase>
-
<goals>
-
<goal>clean</goal>
-
</goals>
-
</execution>
-
</executions>
-
</plugin>
-
</plugins>
-
</build>
最终执行 package、install、deploy 后,maven会将该module的pom文件中的 ${project.build.version} 替换为实际的版本号,轻松解决pom中版本号的问题。
官网
Maven – Maven CI Friendly Versions
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgccbie
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01