如何輕鬆地在多模塊Maven項目中更新模塊的版本號

mvn versions 插件的使用

使用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
相關文章
相關標籤/搜索