使用自动化插件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


# 源代码



相关文章
|
22天前
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
99 1
Maven——创建 Spring Boot项目
|
25天前
|
Java 关系型数据库 MySQL
如何使用 maven 创建一个 Spring Boot项目
Maven 是一个强大的项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,提高开发效率。其核心功能包括项目构建和依赖管理。项目构建支持编译、测试、打包和发布等流程,而依赖管理则通过中央仓库、本地仓库和私有服务器获取和管理项目依赖。示例中展示了如何创建第一个 SpringBoot 项目并实现简单接口。
21 1
如何使用 maven 创建一个 Spring Boot项目
|
25天前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
117 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
13天前
|
缓存 IDE Java
idea的maven项目打包时没有source下的文件
【10月更文挑战第21天】idea的maven项目打包时没有source下的文件
28 1
|
13天前
|
Java API Apache
除了 Maven,还有哪些工具可以管理项目的依赖和版本冲突
除了Maven,常用的项目依赖管理和版本冲突解决工具有Gradle、Ivy、Ant+Ivy、SBT等。这些工具各有特点,适用于不同的开发环境和需求。
|
25天前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
19 2
|
25天前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
48 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
28天前
|
Java 应用服务中间件 Maven
【终极解决方案】IDEA maven 项目修改代码不生效。
【终极解决方案】IDEA maven 项目修改代码不生效。
218 1
|
27天前
|
Java 应用服务中间件 Maven
SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案
SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案
278 0
|
3月前
|
Java Maven
解决idea每次新建maven项目都需要重新配置maven的问题
解决idea每次新建maven项目都需要重新配置maven的问题
141 1

推荐镜像

更多