在我们开发过程中,测试已经测试完,我们需要将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:branch Create a branch of the current project with all versions updated.
  • release:update-versions Update the versions in the POM(s).

首先我们讲解下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然后提交啦,一切都可以自动化起来,是不是感觉原来世界这么美好

maven release操作相关推荐

  1. 关于Objective-C 对象release操作的一个小问题探讨

    最近遇到这样一个问题,以前的时候并未注意:新建一个工程,然后添加一个类,文件结构是这样的 然后写了这样一小段程序,运行 - (void)viewDidLoad { [super viewDidLoad ...

  2. Maven版本管理-Maven Release Plugin插件

    一.什么是版本管理 首先,这里说的版本管理(version management)不是指版本控制(version control),但是本文假设你拥有基本的版本控制的知识,了解subversion的基 ...

  3. maven release插件将一版本发布到仓库中时Return code is: 401, ReasonPhrase:Unauthorized

    需要在maven的setting.xml中配置servers.server节点,其值为nexus的对应的repository的id以及用户名及密码 [html] view plaincopy < ...

  4. note_idea中的maven命令操作

    将自己的项目添加至本地库: 之前用命令行是mvn install 在idea中操作: 执行maven目标 使用mvn install即可 安装成功:

  5. maven release版本不更新原因分析

    问题 有个2.5.1版本的jar包在私服上已经存在,A机器修改代码,但是没有修改版本号,重新上传到私服后,B机器更新不下来,除非B机器删除本地maven仓库中的jar包才能更新下来. <!--B ...

  6. 6.Maven打包操作

    对于企业级项目,无论是进行本地测试,还是测试环境测试以及最终的项目上线,都会涉及项目的打包操作.对于每个环境下的项目打包,对应的项目所需要的配置资源都会有所区别,实现打包的方式有很多种,可以通过ant ...

  7. maven 相关操作

    为什么80%的码农都做不了架构师?>>>    1.本地jar安装到maven仓库 mvn install:install-file -Dfile=jar包的位置 -DgroupId ...

  8. maven eclipse操作

    目前eclipse默认集成maven插件,但要在eclipse中配置maven的setting才可以. setting可以选用mvn解压包下的目录,也可用仓库下的settings文件. 因我们需要结合 ...

  9. maven 发部release版本

    maven会根据模块的版本号(pom文件中的version)中是否带有-SNAPSHOT来判断是快照版本还是正式版本. deploy发布 传统的web项目一般会有一个api模块,用于发布对外的RPC接 ...

最新文章

  1. 浅谈深度学习混合精度训练
  2. 7000 字读懂互联网公司的架构演变历程
  3. Java中获取路径的各种方法
  4. C语言再学习 -- vim常用快捷键(转)
  5. C++读取txt数据为二维数组 将数据保存到txt文本中
  6. 【OpenGL从入门到精通(七)】OpenGL中的数学
  7. FPGA(8)--频率计检测控制系统
  8. PWN-COMPETITION-HGAME2022-Week1
  9. java语言_java语言学习
  10. java swing工具栏_javaSwing如何创建一个有工具条和菜单的窗口
  11. 计算机网络c4比赛题目,计算机网络C4习题
  12. .net random伪随机数
  13. 【项目经验】之线程基本知识
  14. 王者荣耀安卓区修改荣耀战区方法 | 最低战力查询(附带视频与安装包)
  15. Prometheus常用函数
  16. HQPlayer常见问题及解决方案
  17. 你唯一需要擅长的事情
  18. 支付宝 当面付(扫描支付) 对接逻辑
  19. 蓝鲸智云6.1软件单机部署安装教程
  20. cnn 分层 可视化 网站_如何可视化分层数据以显示整体关系

热门文章

  1. 有趣的计算机课的作文,有趣的电脑课_500字_作文素材大全
  2. 西安慧点科技Java基础笔试_java工程师基础笔试题(一)-参考答案
  3. Linux系统和windows系统ssh命令
  4. vscode 调试技巧|程序不是写出来的?是调出来的!
  5. Windows11忘记开机密码怎么办
  6. 前端百题斩【019】——数组中方法原理早知道
  7. 分享几个开源的android项目的源码,基本上用androidstudio都可以编译成功
  8. Linux下schedule模块下载,定时任务模块 schedule
  9. 49 QT打包应用程序
  10. ddd 访问权限_DDD的人事权(72648577)-通常陷阱- 游戏王进阶平台