maven如何動(dòng)態(tài)統(tǒng)一修改版本號(hào)的方法步驟
前言
最近業(yè)務(wù)開發(fā)部門因?yàn)殚_發(fā)環(huán)境和測(cè)試環(huán)境共用一個(gè)maven私倉(cāng),導(dǎo)致他們開發(fā)環(huán)境的API包和測(cè)試環(huán)境的API包發(fā)生了覆蓋現(xiàn)象。于是他們向我們部門提出一個(gè)需求,希望我們能幫他們實(shí)現(xiàn)或者提供這么一個(gè)方案,就是項(xiàng)目自動(dòng)化構(gòu)建時(shí),項(xiàng)目的版本號(hào)能跟著環(huán)境變更。比如是開發(fā)環(huán)境,則項(xiàng)目的API包版本就形如1.0-dev,如果是測(cè)試環(huán)境,則項(xiàng)目的API版本就形如1.0-test
示例演示
項(xiàng)目層級(jí)如下

方案一:mvn -Denv.project.version=1.0-env
注:env.project.version為自定參數(shù)變量,env為dev或者test
1、在maven項(xiàng)目的父級(jí)pom設(shè)置變量,形如下
<groupId>org.example</groupId>
<artifactId>demo-parent</artifactId>
<packaging>pom</packaging>
<version>${env.project.version}</version>
<properties>
<env.project.version>1.0-SNAPSHOT</env.project.version>
</properties>
2、修改其子模塊pom
<parent>
<artifactId>demo-parent</artifactId>
<groupId>org.example</groupId>
<version>${env.project.version}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>module-biz</artifactId>
<parent>
<artifactId>demo-parent</artifactId>
<groupId>org.example</groupId>
<version>${env.project.version}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>module-api</artifactId>
3、執(zhí)行如下命令
mvn clean package -Denv.project.version=1.0-dev -DskipTests
如果要打包發(fā)布到私有倉(cāng)庫(kù),則執(zhí)行
mvn clean deploy-Denv.project.version=1.0-dev -DskipTests
4、驗(yàn)證


從截圖,可以看出達(dá)到預(yù)期的效果
方案二 maven的profile+自定參數(shù)變量
1、在maven項(xiàng)目的父級(jí)pom設(shè)置變量,并添加profile,形如下
<properties>
<env.project.version>1.0-SNAPSHOT</env.project.version>
</properties>
<profiles>
<profile>
<id>dev</id>
<properties>
<env.project.version>1.0-dev</env.project.version>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<env.project.version>1.0-test</env.project.version>
</properties>
</profile>
</profiles>
2、修改其子模塊pom
<parent>
<artifactId>demo-parent</artifactId>
<groupId>org.example</groupId>
<version>${env.project.version}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>module-biz</artifactId>
<parent>
<artifactId>demo-parent</artifactId>
<groupId>org.example</groupId>
<version>${env.project.version}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>module-api</artifactId>
3、執(zhí)行如下命令
mvn clean package -Ptest -DskipTests
如果要打包發(fā)布到私有倉(cāng)庫(kù),則執(zhí)行
mvn clean deploy -Ptest -DskipTests
注:不指定-P默認(rèn)為dev
4、驗(yàn)證


從截圖,可以看出達(dá)到預(yù)期的效果
方案三(推薦) mvn versions:set -DnewVersion=1.0-dev
注:使用該命令,項(xiàng)目無(wú)需做任何變動(dòng)。
直接執(zhí)行命令
mvn versions:set -DnewVersion=1.0-dev
如果要發(fā)布到私倉(cāng),此時(shí)要分兩次命令執(zhí)行,命令如下
mvn versions:set -DnewVersion=1.0-dev mvn clean deploy -DskipTests

此時(shí)查看idea,會(huì)發(fā)現(xiàn)

項(xiàng)目版本號(hào)已經(jīng)發(fā)生改變,且產(chǎn)生一個(gè)pom.xml.versionsBackup文件,這個(gè)文件是用來(lái)回退版本用的,其內(nèi)容如下

如果確認(rèn)沒問題,則可以執(zhí)行你本來(lái)要操作的步驟,比如打包或者發(fā)布,形如下命令
mvn clean package/deploy -DskipTests

從截圖,可以看出達(dá)到預(yù)期的效果
如果有問題想回退版本,則執(zhí)行
mvn versions:revert
進(jìn)行回退。不過能成功執(zhí)行該步驟的前提是沒有執(zhí)行
mvn versions:commit
且存在pom.xml.versionsBackup文件文件
如果不想產(chǎn)生pom.xml.versionsBackup文件,則可以在父pom配置如下插件
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.8.1</version>
<configuration>
<generateBackupPoms>false</generateBackupPoms>
</configuration>
</plugin>
</plugins>
</build>
指定generateBackupPoms為false
參數(shù)介紹

其具體更多詳細(xì)介紹可以查看官網(wǎng)
http://www.mojohaus.org/versions-maven-plugin/index.html
總結(jié)
從本示例的業(yè)務(wù)場(chǎng)景來(lái)看,通過自定義變量雖然也可以達(dá)到效果,但是如果子模塊一多的話,可能容易發(fā)生漏改現(xiàn)象。因此個(gè)人推薦使用mvn versions:set -DnewVersion=1.0-dev這種形式來(lái)進(jìn)行修改
到此這篇關(guān)于maven如何動(dòng)態(tài)統(tǒng)一修改版本號(hào)的方法步驟的文章就介紹到這了,更多相關(guān)maven動(dòng)態(tài)統(tǒng)一修改版本號(hào)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis SQL日志如何轉(zhuǎn)換為可執(zhí)行sql
這篇文章主要介紹了Mybatis SQL日志如何轉(zhuǎn)換為可執(zhí)行sql問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
springboot+vue實(shí)現(xiàn)Minio文件存儲(chǔ)的示例代碼
本文主要介紹了springboot+vue實(shí)現(xiàn)Minio文件存儲(chǔ)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02
Springboot?注解EqualsAndHashCode詳解
注解@EqualsAndHashCode主要用于自動(dòng)生成equals方法和hashCode方法,callSuper屬性為true時(shí),生成的方法會(huì)包括父類字段,為false則只包含當(dāng)前類字段,IDEA工具中有檢查提示并可自動(dòng)修復(fù)相關(guān)代碼,確保注解正確使用,更多詳解可查閱相關(guān)文檔2024-10-10
解決Mybatis中foreach嵌套使用if標(biāo)簽對(duì)象取值的問題
這篇文章主要介紹了解決Mybatis中foreach嵌套使用if標(biāo)簽對(duì)象取值的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
Java獲取文件的類型和擴(kuò)展名的實(shí)現(xiàn)方法
這篇文章主要介紹了Java獲取文件的類型和擴(kuò)展名的實(shí)現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下2017-02-02
Java實(shí)現(xiàn)ftp上傳下載、刪除文件及在ftp服務(wù)器上傳文件夾的方法
這篇文章主要介紹了Java實(shí)現(xiàn)ftp上傳下載、刪除文件及在ftp服務(wù)器上傳文件夾的方法,需要的朋友可以參考下2015-11-11
Java如何調(diào)用TSC打印機(jī)進(jìn)行打印詳解
這篇文章主要給大家介紹了關(guān)于Java如何調(diào)用TSC打印機(jī)進(jìn)行打印的相關(guān)資料,文中介紹了三種方法,分別是兩種后臺(tái)打印以及JS打印 ,三種方法都給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面來(lái)一起看看吧2018-07-07
jenkins+Maven從SVN上構(gòu)建項(xiàng)目的方法
這篇文章主要介紹了jenkins+Maven從SVN上構(gòu)建項(xiàng)目,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09

