maven版本自动管理方案

在我们的devops系统中,包管理一向都是一个非常头疼的问题,如果涉及到自研基础包,如common等,更是束手无策,往往让开发自己维护,在snapshot包向release包晋级的过程中,除了要修改应用本身的版本号,还需要修改依赖包的版本号,此过程涉及到pom修改,代码提交,代码构建上传至nexus等等操作,那么我们能不能通过系统自动完成这些操作呢?当然是可以的

 maven版本自动管理方案

如图所示,我们一般需要在sit环境测试完毕后需要将snapshot包向release包晋级,我们主要针对这个过程进行详细讲解

首先,我们分析下,这个过程我们需要进行的操作

1.修改此工程pom中依赖的第三方包为release

<dependency>
    <groupId>org.example</groupId>
    <artifactId>common-util-dr</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</dependency>

2.修改此工程pom版本号为release

<version>1.0.0.2-SNAPSHOT</version>

3.将代码上传至gitlab

4.将此分支打tag

5.通过代码构建release包,并上传至nexus

6.修改代码版本号为1.0.0.2-SNAPSHOT,即原有版本加1

以上即为一次包晋级所需要进行的操作

 

为了实现上述功能,我们需要借用maven的几个插件

1.maven release

2.maven versions

3.maven scm

其实正常情况下maven release就能很好的帮我们完成包的晋级操作,只是对服务依赖第三方包的版本无法进行修改,所以我们借用了后面两个插件来完成第三方依赖包的版本管理

maven release的操作详情请参看我的上一篇博客

https://blog.csdn.net/tushuping/article/details/107676855

接下来我们讲解下maven versions

maven version有许多功能,我们这里只用到检查pom里面是否存在snapshot包,并对比仓库里面是否存在该包对应的release版本,如果存在,则讲该版本修改为对应的release版本

使用命令为

mvn versions:use-releases

maven scm 是maven和代码仓的交互,比如获取代码,修改代码,提交代码等

此处我们主要使用了,提交代码的命令

mvn scm:checkin -Dmessage=修改依赖版本

即可将依赖包的版本进行升级,然后再去处理应用本身的版本,通过此方法,就不需要开发人员介入,自动进行版本的管理和升级操作,本文只是提供了一份包版本管理的解决方案,如果有更好的方案,请不吝和我交流,下图主要提供了一种对应的分支管理方案可进行参考

 maven版本自动管理方案