maven如何動態(tài)統(tǒng)一修改版本號的方法步驟
前言
最近業(yè)務開發(fā)部門因為開發(fā)環(huán)境和測試環(huán)境共用一個maven私倉,導致他們開發(fā)環(huán)境的API包和測試環(huán)境的API包發(fā)生了覆蓋現(xiàn)象。于是他們向我們部門提出一個需求,希望我們能幫他們實現(xiàn)或者提供這么一個方案,就是項目自動化構建時,項目的版本號能跟著環(huán)境變更。比如是開發(fā)環(huán)境,則項目的API包版本就形如1.0-dev,如果是測試環(huán)境,則項目的API版本就形如1.0-test
示例演示
項目層級如下
方案一:mvn -Denv.project.version=1.0-env
注:env.project.version為自定參數(shù)變量,env為dev或者test
1、在maven項目的父級pom設置變量,形如下
<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ā)布到私有倉庫,則執(zhí)行
mvn clean deploy-Denv.project.version=1.0-dev -DskipTests
4、驗證
從截圖,可以看出達到預期的效果
方案二 maven的profile+自定參數(shù)變量
1、在maven項目的父級pom設置變量,并添加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ā)布到私有倉庫,則執(zhí)行
mvn clean deploy -Ptest -DskipTests
注:不指定-P默認為dev
4、驗證
從截圖,可以看出達到預期的效果
方案三(推薦) mvn versions:set -DnewVersion=1.0-dev
注:使用該命令,項目無需做任何變動。
直接執(zhí)行命令
mvn versions:set -DnewVersion=1.0-dev
如果要發(fā)布到私倉,此時要分兩次命令執(zhí)行,命令如下
mvn versions:set -DnewVersion=1.0-dev mvn clean deploy -DskipTests
此時查看idea,會發(fā)現(xiàn)
項目版本號已經發(fā)生改變,且產生一個pom.xml.versionsBackup文件,這個文件是用來回退版本用的,其內容如下
如果確認沒問題,則可以執(zhí)行你本來要操作的步驟,比如打包或者發(fā)布,形如下命令
mvn clean package/deploy -DskipTests
從截圖,可以看出達到預期的效果
如果有問題想回退版本,則執(zhí)行
mvn versions:revert
進行回退。不過能成功執(zhí)行該步驟的前提是沒有執(zhí)行
mvn versions:commit
且存在pom.xml.versionsBackup文件文件
如果不想產生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ù)介紹
其具體更多詳細介紹可以查看官網(wǎng)
http://www.mojohaus.org/versions-maven-plugin/index.html
總結
從本示例的業(yè)務場景來看,通過自定義變量雖然也可以達到效果,但是如果子模塊一多的話,可能容易發(fā)生漏改現(xiàn)象。因此個人推薦使用mvn versions:set -DnewVersion=1.0-dev這種形式來進行修改
到此這篇關于maven如何動態(tài)統(tǒng)一修改版本號的方法步驟的文章就介紹到這了,更多相關maven動態(tài)統(tǒng)一修改版本號內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
項目總結之HttpURLConnection的disconnect的問題
這篇文章主要介紹了項目總結之HttpURLConnection的disconnect的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06使用JAVA8 filter對List多條件篩選的實現(xiàn)
這篇文章主要介紹了使用JAVA8 filter對List多條件篩選的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03JAVA String轉化成java.sql.date和java.sql.time方法示例
這篇文章主要給大家分享了關于JAVA String轉化成java.sql.date和java.sql.time的方法,文中給出了詳細的示例代碼,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-03-03Springboot實現(xiàn)多線程及線程池監(jiān)控
線程池的監(jiān)控很重要,本文就來介紹一下Springboot實現(xiàn)多線程及線程池監(jiān)控,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧2024-01-01解決jackson反序列化失敗InvalidFormatException:Can not dese
這篇文章主要介紹了解決jackson反序列化失敗InvalidFormatException:Can not deserialize value of type java.util.Date問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12利用openoffice+jodconverter-code-3.0-bate4實現(xiàn)ppt轉圖片
這篇文章主要為大家詳細介紹了利用openoffice+jodconverter-code-3.0-bate4實現(xiàn)ppt轉圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07