我有类似的需求,我决定实现一个外部 bash 脚本来管理它。
我们不使用 maven-release 插件,因为我们不使用 SNAPSHOT,也不使用 SCM 连接。
我从 pom.xml 加载当前版本
CURRENT_VERSION=`echo -e 'setns x= http://maven.apache.org/POM/4.0.0 \ncat /x:project/x:version/text()' | xmllint --shell pom.xml | grep -v /`
并在其上运行一些逻辑来设置新版本。然后,我跑
mvn 版本:设置 -DnewVersion=$MY_NEW_VALUE
之后,我运行构建。
这是我所做的一个通用示例
#!/bin/bash
# Increment an existing version in pom.xml and run a new build with it
# Error message and exit 1
abort()
{
echo;echo "ERROR: $1";echo
exit 1
}
# Accept a version string and increment its last element (assume string is passed correctly)
incrementVersionLastElement()
{
IN=$1
VER1=`echo $IN | awk -F\. 'BEGIN{i=2}{res=$1; while(i<NF){res=res"."$i; i++}print res}'`
VER2=`echo $IN | awk -F\. '{print $NF}'`
VER2=`expr $VER2 + 1`
OUT="$VER1.$VER2"
echo $OUT
}
# Getting project version from pom.xml
PROJECT_VERSION=`echo -e 'setns x=http://maven.apache.org/POM/4.0.0\ncat /x:project/x:version/text()' | xmllint --shell pom.xml | grep -v /`
echo Current project version: $PROJECT_VERSION
NEW_PROJECT_VERSION=`incrementVersionLastElement $PROJECT_VERSION`
# Setting the new version
mvn versions:set -DnewVersion=$NEW_PROJECT_VERSION
if [ "$?" != "0" ]
then
abort "maven failed"
fi
# Run the maven main build
mvn clean install
if [ "$?" != "0" ]
then
abort "maven failed"
fi
这很粗糙,但对我们来说效果很好,一年多了。
我希望这有帮助。