目录
直接我球docs粘过来的,我不用写两份,欢迎投递简历:https://github.com/singgel
直接我球docs粘过来的,我不用写两份,欢迎投递简历:github.com/singgel
以下内容摘自雪球,在公司内部的docs上的内容总结,部分隐私信息已经处理改动
命令
shell操作指令
mvn release:prepare ``-DautoVersionSubmodules``=true ``-Darguments``=``"-DskipTests"``mvn release:rollback``mvn release:perform ``-DuseReleaseProfile``=false |
|---|
如果需要跳过单元测试,可以加入参数 -Darguments="-DskipTests",直接使用-Dmaven.test.skip=true是无效的。
maven-release-plugin开始准备发布版本,如果它检测到项目有为提交的代码或者项目有快照的依赖,则会提示出错。如果一切都没有问题,则会提示用户输入想要发布的版本号,标签的名称以及新的快照版本号。
如果这时你发现了一些问题,例如将标签名称配置错了,则可以使用release:rollback命令回退发布,maven-release-plugin会将POM的配置回到release:prepare之前的状态。但需要注意的是,版本控制系统中的标签并不会被删除,也就是说用户需要手动执行版本控制系统命令删除该标签。
在多模块项目中执行release:prepare的时候,默认maven-release-plugin会提示用户设定每个模块发布版本号及新的开发版本号(如在xxx-parent模块中配置)。但是很多情况下我们希望所有模块的发布版本以及新的SNAPSHOT开发版本都保持一致。为了避免重复确认,maven-release-plugin提供了autoVersionSubmodules参数,运行下面命令后,maven-release-plugin就会自动为所有子模块使用与父模块一致的发布版本和新的SNAPSHOT版本。
如果你所发布项目的打包类型为jar,在执行release:perform之后,不仅项目的主构件会被生成并发布到仓库中,基于该主构件的-sources.jar和-javadoc.jar也会生成并发布。在执行mvn release:perform时默认会生成api文档,如果默写注释不符合规范的话会造成构建失败,可以加参数-DuseReleaseProfile=false取消构建api文档,或则需要根据规范书写注释。
前置配置
根目录pom.xml添加以下配置
要为项目发布版本,首先需要为其添加正确的版本控制系统信息,这是因为Maven Release Plugin需要知道版本控制系统的主干,标签等地址信息后才能执行相关的操作。一般配置项目的SCM信息如下,该配置只告诉Maven当前代码的位置(主干),而版本发布还要涉及标签操作。因此还需要配置maven-release-plugin告诉其标签的基础目录,此外maven-site-plugin请升级至3.7.1,不然报错
<``issueManagement``>`` ``<``system``>JIRA</``system``>`` ``<``url``>http://jira.snowballfinance.com/issues</``url``>``</``issueManagement``> <``scm``>`` ``<``connection``>scm:git:http://项目git地址</``connection``>`` ``<``url``>项目git地址(不加'.git后缀')</``url``>`` ``<``developerConnection``>scm:项目git地址</``developerConnection``>``</``scm``> <``distributionManagement``>`` ``<``repository``>`` ``<``id``>xueqiu_artifactory_release</``id``>`` ``<``url``>http://repo.snowballfinance.com/artifactory/libs-release-local/</``url``>`` ``</``repository``>`` ``<``snapshotRepository``>`` ``<``id``>xueqiu_artifactory_snapshot</``id``>`` ``<``url``>http://repo.snowballfinance.com/artifactory/libs-snapshot-local/</``url``>`` ``</``snapshotRepository``>`` ``<``site``>`` ``<``id``>target-site-deploy</``id``>`` ``<``url``>file:target/site-deploy/xueqiu-logger-impls</``url``>`` ``</``site``>``</``distributionManagement``> <``build``>`` ``<``plugins``>`` ``<``plugin``>`` ``<``groupId``>org.apache.maven.plugins</``groupId``>`` ``<``artifactId``>maven-compiler-plugin</``artifactId``>`` ``<``version``>3.8.0</``version``>`` ``<``configuration``>`` ``<``source``>1.8</``source``>`` ``<``target``>1.8</``target``>`` ``</``configuration``>`` ``</``plugin``>`` ``<``plugin``>`` ``<``groupId``>org.apache.maven.plugins</``groupId``>`` ``<``artifactId``>maven-release-plugin</``artifactId``>`` ``<``version``>2.5.3</``version``>`` ``<``configuration``>`` ``<``tagNameFormat``>v@{project.version}</``tagNameFormat``>`` ``<``autoVersionSubmodules``>true</``autoVersionSubmodules``>`` ``</``configuration``>`` ``</``plugin``>`` ``<``plugin``>`` ``<``groupId``>org.apache.maven.plugins</``groupId``>`` ``<``artifactId``>maven-site-plugin</``artifactId``>`` ``<``version``>3.7.1</``version``>`` ``</``plugin``>`` ``</``plugins``>``</``build``> |
|---|
指令说明
release:prepare准备版本发布,依次执行下列操作:
- 检查项目是否有未提交的代码。
- 检查项目是否有快照版本依赖。
- 根据用户的输入将快照版本升级为发布版。
- 将POM中的SCM信息更新为标签地址。
- 基于修改后的POM执行Maven构建。
- 提交POM变更。
- 基于用户输入为代码打标签。
- 将代码从发布版升级为新的快照版。
- 提交POM变更。
release:rollback回退release:prepare所执行的操作:
将POM回退至release:prepare之前的状态,并提交。需要注意的是,该步骤不会删除release:prepare生成的标签,因此用户需要手动删除。
release:perform执行版本发布:
签出release:prepare生成的标签中的源代码,并在此基础上执行mvn deploy命令打包并部署构件至仓库。
参考资料: