maven release plugin支持自动发布
调研结果:
Maven Release Plugin 插件简介:
该插件主要有三个目标:release: prepare, release: rollback, release: perform
release:prepare 准备版本发布,依次执行下列操作:
1. 检查项目是否有未提交的代码
2. 检查项目是否有快照版本依赖
3. 根据用户的输入将快照版本升级为发布版
4. 将POM中的SCM信息更新为标签地址
5. 基于修改后的POM执行maven构建
6. 提交POM变更
7. 基于用户输入为代码打标签
8. 将代码从发布版升级为新的快照版
9.提交POM变更
release: rollback 回退release:prepare执行的操作
回退release: prepare所执行的操作。将POM回退至release:prepare之前的状态,并提交。
该步骤不会删除release:prepare生成的标签,需要用户手动删除。
release: perform 执行版本发布
签出release:prepare生成的标签中的源代码,并在此基础上执行mvn deploy命令打包并部署构件至仓库。
另外,该插件的branch目标能帮助我们创建分支,依次执行如下操作:
1. 检查本地有无未提交的代码
2. 将分支更改POM的版本,如:1.0.0-SNAPSHOT改成1.0.1-SNAPSHOT
3. 将POM中的SCM信息更新为分支地址
4. 提交以上更改
5. 将主干代码复制到分支中
6. 修改本地代码使其回退到分支前的版本(用户可以指定新的版本)
7. 提交本地更改
相关细节如下:
1.当执行release:prepare时,将会以交互形式提示用户,要发布的版本、tag的名称、下一个迭代的版本等,用户可以根据需要进行更改。
2.当执行release: perform操作时,将会把release: prepare操作所准备的版本真正发布到仓库中。
3.上述两个步骤既可以在master上进行,也可以在其他分支进行,也就是发布时可以选择在master上,也可以在其他分支上,每发布一次将会创建一个tag。
4.当执行release:prepare操作时,在提示用户下一个迭代版本时,默认会将小版本加1,如果用户希望保持原来版本不变,可以输入原来版本,也可以输入自己希望的版本。
5.当执行release:branch时,用户可以创建branch,创建branch时,版本号保持和本地工作副本一致,用户可以使用release:update-versions更新版本,但该更新操作只能将版本更成带-SNAPSHOT的快照版,不支持更改成不带-SNAPSHOT的发布版。
6.如果项目里所有的版本均不带-SNAPSHOT,则执行release:prepare时将报错:Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare (default-cli) on project test: You don't have a SNAPSHOT project in the reactor projects list.