Java 如何使用maven版本插件选择下一个版本号?
我有一个maven项目结构,看起来像这样Java 如何使用maven版本插件选择下一个版本号?,java,maven,Java,Maven,我有一个maven项目结构,看起来像这样 project/ pom.xml // parent and aggregator pom module1/ pom.xml module2/ pom.xml 我想做的是更改项目版本,从pom.xml开始,一直到子项目 我可以使用versions pluginmvn versions:set-DnewVersion=1.0.3-SNAPSHOT显式指定新版本,它正确地将项目的版本号更改为显式指定的版本 是否有
project/
pom.xml // parent and aggregator pom
module1/
pom.xml
module2/
pom.xml
我想做的是更改项目版本,从pom.xml开始,一直到子项目
我可以使用versions pluginmvn versions:set-DnewVersion=1.0.3-SNAPSHOT
显式指定新版本,它正确地将项目的版本号更改为显式指定的版本
是否有一种方法可以使用版本插件,以便它根据当前版本号自动选择下一个版本号
- 如果版本号为0.0.1-SNAPSHOT,则应选择0.0.1作为下一个版本
- 如果版本号为0.0.1,则应选择0.0.2-SNAPSHOT作为下一个版本
- 我也有类似的需求,我决定实现一个外部bash脚本来管理它
我们不使用maven发布插件,因为我们不使用快照,也不使用SCM连接
我从pom.xml加载当前版本
当前版本=`echo-e'setns x=\ncat/x:project/x:VERSION/text()'| xmllint--shell pom.xml | grep-v/`
并在其上运行一些逻辑以设置新版本。然后,我跑
mvn版本:set-DnewVersion=$MY\u NEW\u值
之后,我运行构建
下面是我所做工作的一般示例
#!/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
#/bin/bash
#在pom.xml中增加一个现有版本,并使用它运行一个新的构建
#错误消息并退出1
中止
{
echo;echo“错误:$1”;echo
出口1
}
#接受一个版本字符串并递增其最后一个元素(假设字符串传递正确)
IncrementVersionLasteElement()
{
英寸=1美元
VER1=`echo$IN | awk-F\.'BEGIN{i=2}{res=$1;而(iDid你看了发布插件了吗?@Henry我正在实施JavaOne视频中描述的与maven进行持续集成的策略,如果你看的话,它将解释为什么发布插件不适合用于持续交付。你能详细说明需要安装哪些命令行实用程序来实现这一点吗工作。shell脚本代码也可以吗?我实际上不使用任何特殊工具。我只是获取版本,使用sed s/\.//g或tr','',将其拆分,然后使用expr$VAL+1处理我需要的数字,并运行mvn命令。实现非常适合我们的环境。如果需要通用示例,请告诉我。通用示例将是b太棒了