使用自动化插件release来管理maven项目的版本发布

在实际开发过程中,特别是现在推崇的敏捷开发,项目版本的发布非常频繁,有可能是一周就一个版本。对于多模块构建的项目,如何在发布时统一升级项目版本,如果都由人来操作,很容易就漏改某个模块的版本,导致出现问题。
本文要介绍的就是使用Maven插件来统一管理这些模块的版本,规范化这一过程。

  • 插件: maven-release-plugin

一、 环境与目标

1. 示例环境:
基于Maven构建的多模块项目

  • 父项目坐标
    com.futao
    starter-fustack
    0.0.1-SNAPSHOT
    starter-fustack
  • 子模块列表:
    
        
        fustack-wx-mini-program
        
        fustack-autoconfiguration
        
        fustack-consts
        demo-test
        
        fustack-db
        
        fustack-foundation
        
        fustack-tencent-cloud-short-message
        
        fustack-web
        
        fustack-auth
        
        fustack-exceptions
        
        fustack-redis
        
        fustack-utils
    

2. 示例目标:
当前处于开发阶段,项目的版本为: 0.0.1-SNAPSHOT,即将需要发布该版本的正式版本: 0.0.1,且在正式版发布之后,下一个开发版本为: 0.0.2-SNAPSHOT。并同时将构建好的构件发布到maven私服。

二、 插件介绍

  • 插件: maven-release-plugin
  • 命令:
    • mvn release:prepare: 准备发布版本
      1. 检查项目是否有未提交的代码,有的话会报错。
      2. 检查项目是否有快照版本的依赖。
      3. 提示用户输入将要发布的版本号,并且自动将项目中pom文件中的版本号更新为用户输入的版本号。
      4. 提示用户输入一个tagName。
      5. 基于修改后的pom执行构建。
      6. 提交pom变更到VCS。
      7. 提示用户输入下一个开发版的版本号,并且自动将项目中pom文件中的版本号更新为用户输入的版本号。
      8. 提交pom变更到VCS。
    • mvn release:rollback: 回滚prepare阶段的操作,将pom回退至之前的状态并提交,但是不会删除prepare生成的tag标签。
    • mvn release:perform: 执行版本发布,执行mvn deploy命令打包并部署构件到远程仓库。

三、 演示过程

1. 添加release插件支持


    org.apache.maven.plugins
    maven-release-plugin
    
        
        
        true
        
        release-by-maven-${version}
    

  • 如果需要将构建好的构件发布到自己的maven私服,需要进行以下配置:
    • ~/.m2/settings.xml中添加maven私服的用户名和密码
    • 在项目的pom.xml文件中配置repository

    
        对应settings中设置的id
        需要上传到的maven私服地址
    

2. 在pom.xml中设置SCM地址


    
    
    
    scm:git:https://github.com/FutaoSmile/starter-fustack
    
    
    
    v-release-0.0.1

3. 执行命令

  • mvn release:prepare
  • mvn relase:perform
  • prepare准备过程截图:
image.png

image.png

image.png

image.png

image.png
  • 执行版本发布截图:


    image.png

    image.png
  • 检查maven私服,构件是否上传成功


    image.png
  • 代码已自动更新至下一个开发版


    image.png

# 源代码

  • https://gitee.com/FutaoSmile/starter-fustack
  • https://github.com/FutaoSmile/starter-fustack

你可能感兴趣的:(使用自动化插件release来管理maven项目的版本发布)