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

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

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


本文要介绍的就是使用Maven插件来统一管理这些模块的版本,规范化这一过程。

  • 插件: maven-release-plugin


一、 环境与目标



1. 示例环境:


基于Maven构建的多模块项目

  • 父项目坐标

<groupId>com.futao</groupId>
    <artifactId>starter-fustack</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>starter-fustack</name>
  • 子模块列表:

<modules>
        <!--微信小程序-->
        <module>fustack-wx-mini-program</module>
        <!--自动配置-->
        <module>fustack-autoconfiguration</module>
        <!--常量-->
        <module>fustack-consts</module>
        <module>demo-test</module>
        <!--数据库-->
        <module>fustack-db</module>
        <!--基础-->
        <module>fustack-foundation</module>
        <!--腾讯短信-->
        <module>fustack-tencent-cloud-short-message</module>
        <!--WEB支持-->
        <module>fustack-web</module>
        <!--权限控制-->
        <module>fustack-auth</module>
        <!--异常体系-->
        <module>fustack-exceptions</module>
        <!--Redis-->
        <module>fustack-redis</module>
        <!--工具包-->
        <module>fustack-utils</module>
    </modules>


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插件支持

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <configuration>
        <!--<tagBase>https://github.com/FutaoSmile/starter-fustack</tagBase>-->
        <!--是否自动为子模块分配父版本。如果设置为false,将提示用户输入每个子模块的版本。-->
        <autoVersionSubmodules>true</autoVersionSubmodules>
        <!--tag标签名-->
        <tagNameFormat>release-by-maven-${version}</tagNameFormat>
    </configuration>
</plugin>
  • 如果需要将构建好的构件发布到自己的maven私服,需要进行以下配置:
  • ~/.m2/settings.xml中添加maven私服的用户名和密码
  • 在项目的pom.xml文件中配置repository

<distributionManagement>
    <repository>
        <id>对应settings中设置的id</id>
        <url>需要上传到的maven私服地址</url>
    </repository>
</distributionManagement>

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

<scm>
    <!--可读的SCM地址-->
    <!--<connection>scm:git:https://github.com/FutaoSmile/starter-fustack</connection>-->
    <!--可写的SCM地址-->
    <developerConnection>scm:git:https://github.com/FutaoSmile/starter-fustack</developerConnection>
    <!--可以在浏览器中访问的scm地址-->
    <!--<url>https://github.com/FutaoSmile/starter-fustack</url>-->
    <!--设置tagName-->
    <tag>v-release-0.0.1</tag>
</scm>


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


代码已自动更新至下一个开发版


image.png


# 源代码



相关文章
|
2天前
|
Java 应用服务中间件 Apache
Maven程序 tomcat插件安装与web工程启动
Maven程序 tomcat插件安装与web工程启动
8 0
|
3天前
|
Java Apache Maven
Maven 项目文档
使用Maven创建`consumerBanking`项目,执行`mvn archetype:generate`命令初始化。确保`pom.xml`包含`maven-site-plugin`至少版本3.3和`maven-project-info-reports-plugin`至少版本2.7,以避免NoClassDefFoundError。升级插件解决文档构建问题。
|
3天前
|
存储 安全 Java
2024ide构建maven项目是总是卡在解析Maven依赖项目 加速方案
2024ide构建maven项目是总是卡在解析Maven依赖项目 加速方案
12 4
2024ide构建maven项目是总是卡在解析Maven依赖项目 加速方案
|
4天前
|
Java 测试技术 Maven
Maven 插件
Maven的三个核心生命周期:clean(清理)、default(构建)、site(站点生成)。每个生命周期包含一系列阶段,如mvn clean执行clean阶段,实现在maven-clean-plugin中。Maven是插件驱动的,插件负责具体任务,如jar/war打包、编译、测试和文档生成。通过`mvn plugin-name:goal-name`调用插件目标。
|
17小时前
|
Java Maven
Maven如何创建Maven web项目
Maven如何创建Maven web项目
|
1天前
|
Java Maven
java运行jar包提示 “XXX中没有主清单属性”,配置maven插件
java运行jar包提示 “XXX中没有主清单属性”,配置maven插件
5 0
|
2天前
|
Java Maven
Maven 自动化构建
Maven自动化构建确保项目依赖稳定性。当`bus-core-api`构建完成后,`app-web-ui`和`app-desktop-ui`自动构建。两者依赖`bus-core-api`的1.0-SNAPSHOT版本。
|
2天前
|
Java 测试技术 Maven
Maven 插件
Maven包含clean(清理)、default(构建)、site三大生命周期,每个周期有一系列阶段,如mvn clean执行Clean生命周期的clean阶段。实际工作由插件完成,如maven-clean-plugin负责清理。Maven是插件驱动的框架,用于生成jar/war、编译、测试、文档等。插件目标通过`mvn plugin-name:goal-name`执行。
|
2天前
|
Java Maven
maven执行 打包时报错提示:不再支持源选项 5。请使用 7 或更高版本。
maven执行 打包时报错提示:不再支持源选项 5。请使用 7 或更高版本。
8 0
|
3天前
|
Java Maven
Maven项目打包成jar项目后运行报错误: 找不到或无法加载主类 Main.Main 和 jar中没有主清单属性解决方案
Maven项目打包成jar项目后运行报错误: 找不到或无法加载主类 Main.Main 和 jar中没有主清单属性解决方案
10 0

推荐镜像

更多