当前位置: 首页 > news >正文

Maven - 使用maven-release-plugin规范化版本发布

文章目录

  • Maven Release plugin – Introduction
  • Maven Release plugin – Plugin Documentation
  • Maven Release plugin – Usage
  • 实战案例

在这里插入图片描述


Maven Release plugin – Introduction

Maven Release Plugin(Maven 发布插件)是一个用于帮助在Maven项目中执行版本发布流程的插件。它的主要功能是简化项目版本的发布和管理,确保版本号的正确性,并自动处理与版本发布相关的任务。

通常情况下,软件项目的版本管理是一个复杂的过程,需要考虑版本号的增加、代码库的分支、标签的创建、文档的更新等一系列任务。Maven Release Plugin 旨在通过自动化这些任务,减少人为错误,并提供一个一致性的发布过程。

Maven Release Plugin 提供了以下主要步骤和功能:

  1. 准备阶段(Prepare Phase)

    • 检查代码库的状态,确保没有未提交的修改。
    • 自动增加项目版本号,比如从 1.0.0-SNAPSHOT 到 1.0.0。
    • 创建一个用于发布的标签,以便后续的版本控制和追踪。
  2. 提交阶段(Perform Phase)

    • 将已更新的版本号和标签提交到版本控制系统(例如 Git、Subversion)。
    • 将项目构建、测试、打包,并生成发布包。
    • 部署生成的发布包到 Maven 仓库,使其可供其他项目使用。
  3. 结束阶段

    • 恢复开发版本号(例如从 1.0.0 到 1.0.1-SNAPSHOT)。
    • 提交恢复后的开发版本号到版本控制系统。

使用 Maven Release Plugin 的好处包括:

  • 简化流程:自动化繁琐的版本管理任务,减少人为错误的可能性。
  • 一致性:确保发布过程的一致性,所有发布都按照相同的规则执行。
  • 版本控制:创建版本号标签,方便在未来查找和回溯特定版本的代码。
  • 构建稳定性:在独立的构建环境中执行发布任务,降低与开发环境不一致导致的问题。

要使用 Maven Release Plugin,你需要在项目的 pom.xml 文件中配置插件,然后通过命令行或者集成开发环境的插件集成来触发插件的操作。需要注意的是,Maven Release Plugin 的配置和使用需要谨慎,特别是在团队协作的环境中,确保所有开发者都理解和遵循相应的发布流程。

在这里插入图片描述

当使用 Maven Release Plugin 时,通常会涉及到以下步骤和配置:

步骤 1:配置 Maven Release Plugin

在项目的 pom.xml 文件中,需要配置 Maven Release Plugin。以下是一个示例的插件配置:

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-release-plugin</artifactId><version>3.0.0</version><configuration><tagNameFormat>@{project.version}</tagNameFormat></configuration></plugin></plugins>
</build>

在上面的配置中,我们指定了 Maven Release Plugin 的版本为 3.0.0,并设置了一个标签名的格式,其中 @{project.version} 将被替换为项目的版本号。


步骤 2:执行发布流程

  1. 准备阶段(Prepare Phase)

    执行以下命令来准备发布,这将包括版本号的增加和标签的创建:

    mvn release:prepare
    

    插件将会提示你输入版本号、下一个开发版本号以及是否提交和推送这些变更。

  2. 提交阶段(Perform Phase)

    在准备阶段完成后,执行以下命令来执行发布:

    mvn release:perform
    

    这将会构建、测试、打包你的项目,并将生成的发布包部署到 Maven 仓库。

  3. 结束阶段

    在完成发布后,你可以执行以下命令来结束发布过程,并将开发版本号恢复:

    mvn release:clean
    

    这将撤销之前所做的版本号和标签变更。

注意事项

  • 确保在执行发布过程前,所有未提交的修改都已提交或保存,以避免数据丢失。
  • 插件的行为受项目的结构和构建流程影响,具体的配置和步骤可能因项目而异。
  • 如果你使用的是版本控制系统(如 Git),请确保你具有适当的权限来创建标签和推送更改。

请注意,这只是一个简单的示例,实际使用中可能需要根据项目的需求进行更详细的配置。建议在使用 Maven Release Plugin 前阅读相关文档,了解各个配置参数的含义以及可能遇到的问题和解决方法。

在这里插入图片描述


该插件用于使用Maven发布项目,节省大量重复的手动工作。项目发布分为两个步骤:准备和执行。

https://maven.apache.org/maven-release/maven-release-plugin/

在这里插入图片描述

  • release:clean Clean up after a release preparation.
  • release:prepare Prepare for a release in SCM.
  • release:prepare-with-pom Prepare for a release in SCM, and generate release POMs that record the fully resolved projects used.
  • release:rollback Rollback a previous release.
  • release:perform Perform a release from SCM.
  • release:stage Perform a release from SCM into a staging folder/repository.
  • release:branch Create a branch of the current project with all versions updated.
  • release:update-versions Update the versions in the POM(s).

在这里插入图片描述

在这里插入图片描述


Maven Release plugin – Plugin Documentation

https://maven.apache.org/maven-release/maven-release-plugin/plugin-info.html

在这里插入图片描述

在这里插入图片描述

You should specify the version in your project’s plugin configuration:

<project>...<build><!-- To define the plugin version in your parent POM --><pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-release-plugin</artifactId><version>3.0.1</version></plugin>...</plugins></pluginManagement><!-- To use the plugin goals in your POM or parent POM --><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-release-plugin</artifactId></plugin>...</plugins></build>...
</project>

Maven Release plugin – Usage

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

https://gitee.com/-/ide/project/FutaoSmile/starter-fustack/edit/master/-/pom.xml

 ?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><packaging>pom</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.futao</groupId><artifactId>starter-fustack</artifactId><version>0.0.2-SNAPSHOT</version><name>starter-fustack</name><description>framework base springboot</description><modules><!--微信小程序--><module>fustack-wx-mini-program</module></modules><properties><java.version>1.8</java.version><spring-boot-admin.version>2.3.0</spring-boot-admin.version><maven.test.skip>true</maven.test.skip><maven.javadoc.skip>true</maven.javadoc.skip></properties><developers><developer><id>futao</id><email>1185172056@qq.com</email><name>一只特立独行的猪</name><roles><role>CEO</role><role>developer-be</role></roles><timezone>GMT +8</timezone><url>https://gitee.com/FutaoSmile</url></developer></developers><dependencies><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId></dependency>.......</dependencies><dependencyManagement><dependencies><!--jwt start--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.2</version></dependency>......</dependencies></dependencyManagement><!--    <build>--><!--        <plugins>--><!--            <plugin>--><!--                <groupId>org.springframework.boot</groupId>--><!--                <artifactId>spring-boot-maven-plugin</artifactId>--><!--            </plugin>--><!--        </plugins>--><!--    </build>--><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>${java.version}</source><target>${java.version}</target><skip>true</skip></configuration></plugin><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></plugins></build><distributionManagement><repository><id>ishanggang-releases</id><url>https://maven.ishanggang.com/repository/maven-releases/</url></repository></distributionManagement><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>
</project>

实战案例

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

在这里插入图片描述

http://www.lryc.cn/news/145552.html

相关文章:

  • 2023.8.29 关于性能测试
  • 基于MATLAB的径向基函数插值(RBF插值)(一维、二维、三维)
  • flume拦截器
  • vue、elementui控制前一级选择后,后一级才会有数据
  • 亲测influxdb安装为window后台服务
  • 【LeetCode - 每日一题】823. 带因子的二叉树 (2023.08.29)
  • flutter 上传图片并裁剪
  • 一台服务器上部署 Redis 伪集群
  • ealtek高清晰音频管理器(realtek高清晰音频管理器怎么设置win10)
  • 微信小程序 scroll-view 组件的 bindscroll 不触发不生效
  • datax 删除分区数据,再写入MySQL脚本
  • hyperf 十四 国际化
  • C语言_初识C语言指针
  • EMQX启用双向SSL/TLS安全连接以及java连接
  • 4399面试总结C/C++游戏开发
  • hashlib 模块学习
  • 大模型开发05:PDF 翻译工具开发实战
  • LeetCode 43题:字符串相乘
  • 基于java Swing 和 mysql实现的飞机订票系统(源码+数据库+ppt+ER图+流程图+架构说明+论文+运行视频指导)
  • Jmeter性能综合实战 —— 签到及批量签到
  • 燃气管网监测系统,提升城市燃气安全防控能力
  • 【SQL】1731. 每位经理的下属员工数量 ( 新思想:确定左表,依次添加后续字段)
  • AMD Radeon RX 7000/6000系列显卡安装ROCm 调用CUDA
  • 钉钉小程序引用阿里巴巴图标
  • 深入了解Nginx:高性能的开源Web服务器与反向代理
  • vue3 自定义显示内容
  • 视频行为分析——视频图像转换与ffmpeg相关操作
  • Bean 生命周期
  • JavaScript原型链污染
  • 【Java】设计模式之单例模式与工厂模式