如何动态修改uri_maven如何动态统一修改版本号
點擊上方藍字關注我們!
01
前言
最近業務開發部門因為開發環境和測試環境共用一個maven私倉,導致他們開發環境的API包和測試環境的API包發生了覆蓋現象。于是他們向我們部門提出一個需求,希望我們能幫他們實現或者提供這么一個方案,就是項目自動化構建時,項目的版本號能跟著環境變更。比如是開發環境,則項目的API包版本就形如1.0-dev,如果是測試環境,則項目的API版本就形如1.0-test
02
示例演示
項目層級如下
方案一:mvn -Denv.project.version=1.0-env注:?env.project.version為自定參數變量,env為dev或者test
01
在maven項目的父級pom設置變量,形如下
<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
執行如下命令
mvn clean package -Denv.project.version=1.0-dev -DskipTests如果要打包發布到私有倉庫,則執行
mvn clean deploy-Denv.project.version=1.0-dev -DskipTests04
驗證
從截圖,可以看出達到預期的效果
方案二 maven的profile+自定參數變量01
在maven項目的父級pom設置變量,并添加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
執行如下命令
mvn clean package?-Ptest -DskipTests如果要打包發布到私有倉庫,則執行
mvn?clean deploy -Ptest -DskipTests注:不指定-P默認為dev
04
驗證
從截圖,可以看出達到預期的效果
方案三(推薦) mvn versions:set -DnewVersion=1.0-dev注:?使用該命令,項目無需做任何變動。
直接執行命令
mvn versions:set?-DnewVersion=1.0-dev如果要發布到私倉,此時要分兩次命令執行,命令如下
mvn versions:set?-DnewVersion=1.0-devmvn clean deploy -DskipTests
此時查看idea,會發現
項目版本號已經發生改變,且產生一個pom.xml.versionsBackup文件,這個文件是用來回退版本用的,其內容如下
如果確認沒問題,則可以執行你本來要操作的步驟,比如打包或者發布,形如下命令
mvn clean package/deploy -DskipTests從截圖,可以看出達到預期的效果。如果有問題想回退版本,則執行
mvn versions:revert進行回退。不過能成功執行該步驟的前提是沒有執行
mvn versions:commit且存在pom.xml.versionsBackup文件文件
如果不想產生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
參數介紹
其具體更多詳細介紹可以查看官網
http://www.mojohaus.org/versions-maven-plugin/index.html
03
總結
從本示例的業務場景來看,通過自定義變量雖然也可以達到效果,但是如果子模塊一多的話,可能容易發生漏改現象。因此個人推薦使用mvn versions:set -DnewVersion=1.0-dev這種形式來進行修改
總結
以上是生活随笔為你收集整理的如何动态修改uri_maven如何动态统一修改版本号的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用dict读取和写入表格_用Python
- 下一篇: c语言向自定数组_C语言一维数组的定义和