maven release操作

在我们开发过程中,测试已经测试完,我们需要将snapshot包转成release包,以前我们往往是这样操作的

1.修改pom的版本号为release,然后mvn deploy

2.提交代码,并打tag

3.修改代码版本为snapshot加1

这些操作非常繁琐,而且容易出错,特别是在maven多模块中,更是头疼,那么有没有简单的操作呢?

当然有,我们需要用到mvn release

mvn  release:prepare

mvn  release:rollback

mvn  release:perform

prepare命令做了哪些操作:

1.检查项目是否有未提交的代码。

2.检查项目是否有快照版本依赖。

3.根据用户的输入将快照版本升级为发布版。

4.将POM中的SCM信息更新为标签地址。

5.基于修改后的POM执行Maven构建。

6.提交POM变更。

7.基于用户输入为代码打标签。

8.将代码从发布版升级为新的快照版。

9.提交POM变更。

perform命令做了哪些操作:

 1.生成doc文档

 2.删除release.properties等发布过程文件

3.迁出release:prepare生成的标签中的源代码,并在此基础上执行mvn deploy命令打包并部署构件至仓库。

 

首先需要配置好maven的settings文件,注意,这里配置的仓库Snapshot和Release仓的仓库类型也必须为这两种

 

 

 




<server>

<id>nexus-releases</id>

<username>admin</username>

<password>******</password>

</server>



<server>

<id>nexus-snapshots</id>

<username>admin</username>

<password>******</password>

</server>

<profile>

<id>nexus</id>

<properties>

<altSnapshotDeploymentRepository>

nexus-snapshots::default::http://192.168.80.131:8081/repository/maven-snapshots/

</altSnapshotDeploymentRepository>

<altReleaseDeploymentRepository>

nexus-releases::default::http://192.168.80.131:8081/repository/maven-releases/

</altReleaseDeploymentRepository>

</properties>

</profile>

<activeProfiles>

<activeProfile>nexus</activeProfile>

</activeProfiles>

 

一、配置scm,如果是多模块,在父pom中配置即可

<scm>

<developerConnection>scm:git:http://192.168.80.130/dray/base-service.git</developerConnection>

</scm>

二、配置插件

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-release-plugin</artifactId>

<configuration>

<autoVersionSubmodules>true</autoVersionSubmodules>

<tagNameFormat>v@{project.version}</tagNameFormat>

<generateReleasePoms>false</generateReleasePoms>

<arguments>-DskipTests</arguments>

</configuration>

</plugin>

三、预处理

mvn -B release:prepare -Dusername=dray -Dpassword=******

或者

mvn -B release:prepare-with-pom

-Dusername=dray -Dpassword=****** 为scm的账号,为了方便cicd可以动态指定

-B为非交互式执行,如果需要自定义指定发布的版本,tag名称,和发布后的版本,可执行

mvn --batch-mode -Dtag=my-proj-1.2 release:prepare \ -DreleaseVersion=1.2 \ -DdevelopmentVersion=2.0-SNAPSHOT

图为自动打的tags

图为nexus包信息

 

四、回滚

mvn -B release:rollback

五、确定处理

 mvn -B release:perform -DuseReleaseProfile=false

DuseReleaseProfile指定了不生成javadoc api文档,因为一般会报错,这里就直接不生成

tips:

除了上述功能,maven release还有其他妙用

maven官网

首先我们讲解下release:update-versions,这个插件主要的作用是修改我们本地pom版本信息,如:

mvn -B release:update-versions -DdevelopmentVersion=1.2.0-SNAPSHOT

修改pom的版本号,不加-DdevelopmentVersion,默认最后一位加一,比如我们的pom版本号为1.2.0-SNAPSHOT,使用这行命令后就变变成1.2.1-SNAPSHOT,和mvn versions:set -DnewVersion=xxxx 功能重叠,主要release:update-versions为官方插件,可通过设置autoVersionSubmodules=true来同步修改子模块,此命令并不会讲本地修改后的pom提交到gitlab,需要手动提交

 

接下来release:branch闪亮登场,从官方文档上我们可以看出,此命令的作用就是从当前工程(分支)创建出新的分支,并修改版本号

常用的命令如下:

mvn -B release:branch -DbranchName=my-branch-test-8    -DscmBranchCommitComment=拉取测试分支  -Dusername=dray  -Dpassword=******  -DupdateBranchVersions=true  -DupdateWor
kingCopyVersions=false

我们分析一下上述命令

-DbranchName 指定了需要创建新分支的名称

-DscmBranchCommitComment 分支提交说明

-DupdateBranchVersions 新的分支是否要基于原分支增加版本号,即原分支版本号加一,默认是false,即不会增加

-DupdateWorkingCopyVersions 本地分支是否需要增加版本号,此处注意,默认是true开启,他会在新拉出的分支版本号加一

我们总结一下,比如原分支版本为1.2.0-SNAPSHOT

-DupdateBranchVersions开启,-DupdateWorkingCopyVersions关闭,则原分支版本号1.2.0-SNAPSHOT,新分支版本号为1.2.1-SNAPSHOT

-DupdateBranchVersions开启,-DupdateWorkingCopyVersions开启,则原分支版本号1.2.2-SNAPSHOT,新分支版本号为1.2.1-SNAPSHOT

-DupdateBranchVersions关闭,-DupdateWorkingCopyVersions开启,则原分支版本号1.2.1-SNAPSHOT,新分支版本号为1.2.0-SNAPSHOT

-DupdateBranchVersions关闭,-DupdateWorkingCopyVersions关闭,则原分支版本号1.2.0-SNAPSHOT,新分支版本号为1.2.0-SNAPSHOT

除了利用它的自增功能,我们也可以指定-DdevelopmentVersion=1.2.0-SNAPSHOT的方式来对新分支进行版本控制,当然仅当updateWorkingCopyVersions = true时,此参数才有意义

好了,利用好release,再也不需要开发去手动修改pom然后提交啦,一切都可以自动化起来,是不是感觉原来世界这么美好

 

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值