maven-release-plugin自动化版本发布

 maven-release-plugin是Apache官方提供帮助自动化项目版本发布的插件,可用于构建release版本项目,实现自动打tag、递增版本号、分发release版本jar包至仓库。

官网

我们平常开发过程中,项目经常需要不断的进行迭代;一次正式的发布过程:

1、手动修改项目pom版本从1.0-SNAPSHOT到1.0;

2、对1.0打tag,例如:V1.0-release;

3、对上述tag发布正式版本号,mvn deploy;

4、修改pom从1.0升级到1.1-SNAPSHOT开发版本;

以上步骤需要手工操作非常繁琐,且容易出错;maven-release-plugin插件就是帮助我们节省大量重复,枯燥的工作。

nexus私服仓库等配置
<distributionManagement>
        <repository>
            <id>MPGGRCMirror-releases</id>
            <name>Nexus Release Repository</name>
            <url>http://ip:端口/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>MPGGRCMirror-snapshots</id>
            <name>Nexus Snapshot Repository</name>
            <url>http://ip:端口/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
scm配置git 远程仓库
<!--git 远程仓库配置-->
<scm>
    <connection>scm:git:http://项目git地址</connection>
    <url>项目git地址(不加'.git后缀')</url>
    <developerConnection>scm:项目git地址</developerConnection>
</scm>
maven release 发布插件
<build>
    <plugins>
    <!-- maven release 发布插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.3</version>
            <configuration>
                <!--  prepare发布之前执行的mvn命令   -->
                <preparationGoals>clean verify</preparationGoals>
                <!--  生成的tag格式  这里 @{} 而不是 ${} 可以防止project.version被其他方式覆盖 -->
                <tagNameFormat>v@{project.version}-release</tagNameFormat>
                <autoVersionSubmodules>true</autoVersionSubmodules>
                <!--       取消构建api文档,否则注释不规范会造成构建失败         -->
                <useReleaseProfile>false</useReleaseProfile>
            </configuration>
        </plugin>
    </plugins>
</build>
如果你所发布项目的打包类型为jar,在执行release:perform之后,不仅项目的主构件会被生成并发布到仓库中,基于该主构件的-sources.jar和-javadoc.jar也会生成并发布。
在执行mvn release:perform时默认会生成api文档,如果默写注释不符合规范的话会造成构建失败,可以加参数-DuseReleaseProfile=false取消构建api文档,或则需要根据规范书写注释。

关于插件目标,主要是prepare和perform两个目标。

prepare:概括来说,就是perform之前需要执行的准备操作,主要是代码版本修改和提交。

具体来说呢?主要有以下几个:

1)检测是否有未提交的代码。

2)检测是否有snapshot依赖。

3)修改工程的版本号为release版本(提示输入)。

4)为当前代码打上一个git的tag(提示输入),提交代码至远程仓库。

5)修改pom为下一个snapshot版本(输入提示),提交至远程仓库。

注意,这里一共提交了两次代码,第一次是release版本,第二次是snapshot版本。


perform:发包。具体来说,perform会从远程代码库拉下刚才第一次提交的release版本的代码。然后内部再起一个maven build过程,执行一次deploy,将release包发至nexus仓库。那怎么找到release版本呢?下面会介绍。

版本号生成策略
1、default: 去掉SNAPSHOT作为release版本,递增一个版本号作为新的SNAPSHOT版本

2、OddEvenVersionPolicy: 将偶数版本作为release,奇数作为开发版

3、SemVerVersionPolicy: 语义化版本号:主版本号.次版本号.修订号 => breaking change.new feature.bug fix…
 

参考文档:

【maven】maven-release-plugin 使用 (git)_51CTO博客_maven-release-plugin

[Maven版本管理插件] - maven-release-plugin介绍与使用_maven插件版本_AgitatorZ的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值