使用maven版本管理插件 的 versions:set
指令便可html
mvn versions:set -DnewVersion=2.50.1-SNAPSHOT
它將調整多模塊項目中的全部pom版本,父版本和依賴版本。express
若是您輸入有誤,請執行apache
mvn versions:revert
以後,若是您對結果感到滿意bash
mvn versions:commit
即可以提交了。maven
注意:此解決方案假定全部模塊也將聚合pom用做父pom,在此答案被認爲是標準的狀況下。若是不是這種狀況,請尋求Garret Wilson的回答。lua
事實證實,有一種方法能夠使用Versions Maven插件不只更新聚合器POM,並且還更新全部聚合的模塊。這是processAllModules選項。必須在聚合器項目的目錄中執行如下命令:插件
mvn versions:set -DnewVersion=2.50.1-SNAPSHOT -DprocessAllModules
Maven版本插件不只將更新全部包含的模塊的版本,還將更新模塊間的依賴關係!這是一個巨大的勝利,將節省大量時間並避免各類問題。code
固然,不要忘記在全部模塊中提交更改,也能夠使用同一開關進行更改:htm
mvn versions:commit -DprocessAllModules
您可能決定徹底省去備份POMS,並在一個命令中完成全部操做:rem
mvn versions:set -DnewVersion=2.50.1-SNAPSHOT -DprocessAllModules -DgenerateBackupPoms=false
上面的方案雖然不錯,但若是每次都手動指定版本,也是一個累人的事,下面簡單的腳本能夠完成對最小版本的自動增加
#!/usr/bin/env bash \# Advances the last number of the given version string by one. function advance\_version () { local v=$1 \# Get the last number. First remove any suffixes (such as '-SNAPSHOT'). local cleaned=\`echo $v | sed \-e 's/\[^0-9\]\[^0-9\]\*$//'\` local last\_num=\`echo $cleaned | sed \-e 's/\[0-9\]\*\\.//g'\` local next\_num=$(($last\_num+1)) \# Finally replace the last number in version string with the new one. echo $v | sed \-e "s/\[0-9\]\[0-9\]\*\\(\[^0-9\]\*\\)$/$next\_num/" } version=$(mvn org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=project.version -q -DforceStdout) new\_version=$(advance\_version $version) mvn versions:set -DnewVersion=${new\_version} -DprocessAllModules -DgenerateBackupPoms=false