使用自动化插件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
: 准备发布版本
检查项目是否有未提交的代码,有的话会报错。
检查项目是否有快照版本的依赖。
提示用户输入将要发布的版本号,并且自动将项目中pom文件中的版本号更新为用户输入的版本号。
提示用户输入一个tagName。
基于修改后的pom执行构建。
提交pom变更到VCS。
提示用户输入下一个开发版的版本号,并且自动将项目中pom文件中的版本号更新为用户输入的版本号。
提交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准备过程截图:
执行版本发布截图:
检查maven私服,构件是否上传成功
image.png
代码已自动更新至下一个开发版
image.png
# 源代码
https://gitee.com/FutaoSmile/starter-fustack
https://github.com/FutaoSmile/starter-fustack
特别推荐一个分享架构+算法的优质内容,还没关注的小伙伴,可以长按关注一下:
长按订阅更多精彩▼
如有收获,点个在看,诚挚感谢
使用自动化插件release来管理maven项目的版本发布相关推荐
- svn更新maven项目报错_使用svn管理Maven项目的方法步骤
0. 在svn服务器中新建一个仓库 在SVN服务器的安装目录下进入bin文件夹,双击VisualAVN Server.msc即可弹出VisualAVN Server窗口 先创建一个新的仓库,右键[Re ...
- select SCM type and URL 用m2e插件从svn导出maven项目
1.用m2e插件从svn导出maven项目 2.下一步到这里,会出现一个警告,select SCM type and URL,你选择type发现下拉列表为空或者只有cvs,没有svn选项 3.点击右下 ...
- 使用codeplex管理WP7项目开发版本
使用codeplex管理WP7项目开发版本 本篇文章介绍如何通过注册codeplex网站用户,创建codeplex项目,使用TFS连接codeplex,将WP7项目添加到TFS中,添加用户操作WP7项 ...
- 博云 BeyondCMP 云管理平台 5.6 版本发布
近日,博云 BeyondCMP 云管理平台 5.6 版本发布正式发布.为了满足不同行业客户对云管理平台的多样化需求,在资源纳管.资源运维.平台综合展示.易用性友好性等方面进行了全面提升. 点击立即申请 ...
- 将maven项目打包并发布到maven中央仓库
为什么要把我们的项目打包发布到maven中央仓库? 开源,为了将我们的项目(作为开源组件)开源出去,让全世界的开发者都可以使用maven将我们的组件引入到他们自己的项目中使用. 项目打包发布到mave ...
- intellij idea maven项目jdk版本会自动重置
今天调试一个多模块Maven项目时,修改了pom后build老是报错,因为项目里面使用了jdk 8 的新特性 报错信息: Error:java: Compilation failed: interna ...
- IDEA—Maven项目JDK版本设置
设置 Settings 中的 Java Compiler 和 Project Structure 中的 Language Level 中的 jdk 版本为自己目前使用的版本,否则会经常提示我们 jdk ...
- 团队作业——项目Alpha版本发布
---恢复内容开始--- https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1 https://edu.cnblogs.com ...
- 团队作业——团队项目Alpha版本发布
该作业所属课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 作业要求链接 https://edu.cnblogs. ...
最新文章
- 为什么机器学习算法难以优化?一文详解算法优化内部机制
- How to Make a Computer Operating System
- linux配置caffe环境,最全caffe安装踩坑记录(Anaconda,nvidia-docker,linux编译)
- Android得到视频缩略图
- python医学科研中能做什么-一个博士生接受怎样的训练是完整、全面的科研训练?...
- Spring Boot快速开发企业级Admin管理后台
- 【Spring注解系列03】@Scope与@Lazy
- 同一个类 cannot be cast to_2021年动漫类年历推荐
- Qt创建Android服务
- input表单只允许输入大于0的整数
- 关于Keil4 转到 Keil5以后的一些错误解决
- 50年间,高水平论文数量国家排名是怎样变化的?| 可视化数据
- linux中_Linux基础知识(Linux系统、Linux中的链表)
- git学习笔记-(6-提交对象)
- c语言输出10000以内的回文数,输出10000以内的素数、回文数、回文素数
- java 自动点击按钮事件_JavaScript代码模拟鼠标自动点击事件示例
- java foxpro,在Visual FoxPro中更新顶部
- 微信分享网页 图标不显示
- 计算机只存在于计算机硬盘上,计算机病毒只存在于计算机硬盘上。()
- 天翼云linux远程密码不对,天翼云主机远程连接
热门文章
- Python 复数属性及操作介绍
- 必须安利的KubernetesDevOps工具
- Php单链表冒泡排序算法,冒泡排序(链表实现)
- poj3481(map的使用)
- 八种常见排序方法总结 C/C++代码实现
- python常用包下载_Python及其常用模块库下载及安装
- 面试使用计算机,面试相关之计算机基础
- android44投屏开发,ARDC(B1425)android投屏利器,开发好帮手.zip
- deepin中mysql数据库的连接_Python爬虫进阶教程(八):MySQL 数据库连接
- 5.6. Spring boot with Logging