如何轻松地在多模块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
相关文章
相关标签/搜索