使用自動(dòng)化插件release來管理maven項(xiàng)目的版本發(fā)布
在實(shí)際開發(fā)過程中,特別是現(xiàn)在推崇的敏捷開發(fā),項(xiàng)目版本的發(fā)布非常頻繁,有可能是一周就一個(gè)版本。對(duì)于多模塊構(gòu)建的項(xiàng)目,如何在發(fā)布時(shí)統(tǒng)一升級(jí)項(xiàng)目版本,如果都由人來操作,很容易就漏改某個(gè)模塊的版本,導(dǎo)致出現(xiàn)問題。本文要介紹的就是使用Maven插件來統(tǒng)一管理這些模塊的版本,規(guī)范化這一過程。
-
插件:? maven-release-plugin
一、 環(huán)境與目標(biāo)
1. 示例環(huán)境: 基于Maven構(gòu)建的多模塊項(xiàng)目
-
父項(xiàng)目坐標(biāo)
????<groupId>com.futaogroupId>
????<artifactId>starter-fustackartifactId>
????<version>0.0.1-SNAPSHOTversion>
????<name>starter-fustackname>
-
子模塊列表:
????<modules>
????????
????????<module>fustack-wx-mini-programmodule>
????????
????????<module>fustack-autoconfigurationmodule>
????????
????????<module>fustack-constsmodule>
????????<module>demo-testmodule>
????????
????????<module>fustack-dbmodule>
????????
????????<module>fustack-foundationmodule>
????????
????????<module>fustack-tencent-cloud-short-messagemodule>
????????
????????<module>fustack-webmodule>
????????
????????<module>fustack-authmodule>
????????
????????<module>fustack-exceptionsmodule>
????????
????????<module>fustack-redismodule>
????????
????????<module>fustack-utilsmodule>
????modules>
2. 示例目標(biāo): 當(dāng)前處于開發(fā)階段,項(xiàng)目的版本為:?0.0.1-SNAPSHOT
,即將需要發(fā)布該版本的正式版本:?0.0.1
,且在正式版發(fā)布之后,下一個(gè)開發(fā)版本為:?0.0.2-SNAPSHOT
。并同時(shí)將構(gòu)建好的構(gòu)件發(fā)布到maven私服。
二、 插件介紹
-
插件:? maven-release-plugin
-
命令: -
mvn release:prepare
: 準(zhǔn)備發(fā)布版本
-
檢查項(xiàng)目是否有未提交的代碼,有的話會(huì)報(bào)錯(cuò)。 -
檢查項(xiàng)目是否有快照版本的依賴。 -
提示用戶輸入將要發(fā)布的版本號(hào),并且自動(dòng)將項(xiàng)目中pom文件中的版本號(hào)更新為用戶輸入的版本號(hào)。 -
提示用戶輸入一個(gè)tagName。 -
基于修改后的pom執(zhí)行構(gòu)建。 -
提交pom變更到VCS。 -
提示用戶輸入下一個(gè)開發(fā)版的版本號(hào),并且自動(dòng)將項(xiàng)目中pom文件中的版本號(hào)更新為用戶輸入的版本號(hào)。 -
提交pom變更到VCS。
mvn release:rollback
: 回滾prepare階段的操作,將pom回退至之前的狀態(tài)并提交,但是不會(huì)刪除prepare生成的tag標(biāo)簽。
mvn release:perform
: 執(zhí)行版本發(fā)布,執(zhí)行
mvn deploy
命令打包并部署構(gòu)件到遠(yuǎn)程倉庫。
三、 演示過程
1. 添加release插件支持
<plugin>
????<groupId>org.apache.maven.pluginsgroupId>
????<artifactId>maven-release-pluginartifactId>
????<configuration>
????????
????????
????????<autoVersionSubmodules>trueautoVersionSubmodules>
????????
????????<tagNameFormat>release-by-maven-${version}tagNameFormat>
????configuration>
plugin>
-
如果需要將構(gòu)建好的構(gòu)件發(fā)布到自己的maven私服,需要進(jìn)行以下配置: -
在 ~/.m2/settings.xml
中添加maven私服的用戶名和密碼 -
在項(xiàng)目的pom.xml文件中配置repository
<distributionManagement>
????<repository>
????????<id>對(duì)應(yīng)settings中設(shè)置的idid>
????????<url>需要上傳到的maven私服地址url>
????repository>
distributionManagement>
2. 在pom.xml中設(shè)置SCM地址
<scm>
????
????
????
????<developerConnection>scm:git:https://github.com/FutaoSmile/starter-fustackdeveloperConnection>
????
????
????
????<tag>v-release-0.0.1tag>
scm>
3. 執(zhí)行命令
-
mvn release:prepare
-
mvn relase:perform
-
prepare準(zhǔn)備過程截圖:
-
執(zhí)行版本發(fā)布截圖:
-
檢查maven私服,構(gòu)件是否上傳成功
-
代碼已自動(dòng)更新至下一個(gè)開發(fā)版
# 源代碼
-
https://gitee.com/FutaoSmile/starter-fustack -
https://github.com/FutaoSmile/starter-fustack
特別推薦一個(gè)分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長按關(guān)注一下:
長按訂閱更多精彩▼
如有收獲,點(diǎn)個(gè)在看,誠摯感謝
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!