如何动态修改uri_maven如何动态统一修改版本号
點(diǎn)擊上方藍(lán)字關(guān)注我們!
01
前言
最近業(yè)務(wù)開(kāi)發(fā)部門因?yàn)殚_(kāi)發(fā)環(huán)境和測(cè)試環(huán)境共用一個(gè)maven私倉(cāng),導(dǎo)致他們開(kāi)發(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)境變更。比如是開(kāi)發(fā)環(huán)境,則項(xiàng)目的API包版本就形如1.0-dev,如果是測(cè)試環(huán)境,則項(xiàng)目的API版本就形如1.0-test
02
示例演示
項(xiàng)目層級(jí)如下
方案一:mvn -Denv.project.version=1.0-env注:?env.project.version為自定參數(shù)變量,env為dev或者test
01
在maven項(xiàng)目的父級(jí)pom設(shè)置變量,形如下
<groupId>org.examplegroupId>????<artifactId>demo-parentartifactId>
????<packaging>pompackaging>
????<version>${env.project.version}version>
????<properties>
????????<env.project.version>1.0-SNAPSHOTenv.project.version>
????properties>
02
修改其子模塊pom
<parent>????????<artifactId>demo-parentartifactId>
????????<groupId>org.examplegroupId>
????????<version>${env.project.version}version>
????parent>
????<modelVersion>4.0.0modelVersion>
????<artifactId>module-bizartifactId><parent>
????????<artifactId>demo-parentartifactId>
????????<groupId>org.examplegroupId>
????????<version>${env.project.version}version>
????parent>
????<modelVersion>4.0.0modelVersion>
????<artifactId>module-apiartifactId>
03
執(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 -DskipTests04
驗(yàn)證
從截圖,可以看出達(dá)到預(yù)期的效果
方案二 maven的profile+自定參數(shù)變量01
在maven項(xiàng)目的父級(jí)pom設(shè)置變量,并添加profile,形如下
<properties>???????????<env.project.version>1.0-SNAPSHOTenv.project.version>
???????properties>
????<profiles>
????????<profile>
????????????<id>devid>
????????????<properties>
????????????????<env.project.version>1.0-devenv.project.version>
????????????properties>
????????????<activation>
????????????????<activeByDefault>trueactiveByDefault>
????????????activation>
????????profile>
????????<profile>
????????????<id>testid>
????????????<properties>
????????????????<env.project.version>1.0-testenv.project.version>
????????????properties>
????????profile>
????profiles>
02
修改其子模塊pom
<parent>????????<artifactId>demo-parentartifactId>
????????<groupId>org.examplegroupId>
????????<version>${env.project.version}version>
????parent>
????<modelVersion>4.0.0modelVersion>
????<artifactId>module-bizartifactId><parent>
????????<artifactId>demo-parentartifactId>
????????<groupId>org.examplegroupId>
????????<version>${env.project.version}version>
????parent>
????<modelVersion>4.0.0modelVersion>
????<artifactId>module-apiartifactId>
03
執(zhí)行如下命令
mvn clean package?-Ptest -DskipTests如果要打包發(fā)布到私有倉(cāng)庫(kù),則執(zhí)行
mvn?clean deploy -Ptest -DskipTests注:不指定-P默認(rèn)為dev
04
驗(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-devmvn 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)沒(méi)問(wèn)題,則可以執(zhí)行你本來(lái)要操作的步驟,比如打包或者發(fā)布,形如下命令
mvn clean package/deploy -DskipTests從截圖,可以看出達(dá)到預(yù)期的效果。如果有問(wèn)題想回退版本,則執(zhí)行
mvn versions:revert進(jìn)行回退。不過(guò)能成功執(zhí)行該步驟的前提是沒(méi)有執(zhí)行
mvn versions:commit且存在pom.xml.versionsBackup文件文件
如果不想產(chǎn)生pom.xml.versionsBackup文件,則可以在父pom配置如下插件
<build>????????<plugins>
????????????<plugin>
????????????????<groupId>org.codehaus.mojogroupId>
????????????????<artifactId>versions-maven-pluginartifactId>
????????????????<version>2.8.1version>
????????????????<configuration>
????????????????????<generateBackupPoms>falsegenerateBackupPoms>
????????????????configuration>
????????????plugin>
????????plugins>
????build>
指定generateBackupPoms為false
參數(shù)介紹
其具體更多詳細(xì)介紹可以查看官網(wǎng)
http://www.mojohaus.org/versions-maven-plugin/index.html
03
總結(jié)
從本示例的業(yè)務(wù)場(chǎng)景來(lái)看,通過(guò)自定義變量雖然也可以達(dá)到效果,但是如果子模塊一多的話,可能容易發(fā)生漏改現(xiàn)象。因此個(gè)人推薦使用mvn versions:set -DnewVersion=1.0-dev這種形式來(lái)進(jìn)行修改
總結(jié)
以上是生活随笔為你收集整理的如何动态修改uri_maven如何动态统一修改版本号的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 用dict读取和写入表格_用Python
- 下一篇: c语言向自定数组_C语言一维数组的定义和