关键字

shell_upgrade_version_in_pom 自动升级maven工程中的项目版本 upgrade-valuetodays-version

关联文集

脚本如下:

#!/bin/bash
# 本功能可由mvn versions:set -DnextSnapshot 来实现

###
# 从pom.xml中获取版本号,将最后一个数字加1,并生成新的版本号
###
###
# 1. use xml-coreutils
# download xml-coreutils from https://sourceforge.net/projects/xml-coreutils/postdownload
# and install it following README
###
# 2. use xmllint
# sudo yum install -y libxml2
# xmllint --xpath "/*[name()='project']/*[name()='version']/text()" pom.xml
#
###

if [ ! -x "$(command -v xmllint)" ]; then
  echo Error: xmllint is not installed. use \'sudo yum install -y libxml2\'
  exit 1
fi

current_dir=$(cd `dirname $0`; pwd)
echo current_dir is ${current_dir}
# use xml-coreutils
# old_version=$(xml-printf '%s' pom.xml :/project/version)
# use xmllint
old_version=$(xmllint --xpath "/*[name()='project']/*[name()='version']/text()" pom.xml)
#old_version=1.9-SNAPSHOT
echo old version is ${old_version}
is_snapshot=0
if [[ "${old_version}" =~ -SNAPSHOT$ ]]; then 
    is_snapshot=1
fi

echo is a snapshot version? ${is_snapshot}
snapshot_str=-SNAPSHOT

old_version_without_snapshot=${old_version}
if [[ ${is_snapshot} == 1 ]]; then
    old_version_length=${#old_version}
    #echo length of [${old_version}] is ${old_version_length}
    end_index=`expr ${old_version_length} - ${#snapshot_str}`
    #echo end index ${end_index}
    old_version_without_snapshot=$(expr substr ${old_version} 1 ${end_index})
fi
echo old_version_without_snapshot is ${old_version_without_snapshot}

digital_version_array=(`echo ${old_version_without_snapshot} | tr '.' ' '`)
#digital_version_array=('1' '9')
#echo old array: [${digital_version_array[@]}]

digital_version_array_length=${#digital_version_array[@]}
#echo digital_version_array_length: ${digital_version_array_length}
last_digital=${digital_version_array[${digital_version_array_length}-1]}
#echo last digital: [${last_digital}]
last_digital=`expr ${last_digital} + 1`
#echo new last digital: [${last_digital}]
digital_version_array[digital_version_array_length-1]=${last_digital}
#echo new array: [${digital_version_array[@]}]
new_version=''
for i in ${digital_version_array[@]}; do
  new_version=${new_version}.${i};
done
new_version=${new_version:1}
if [[ ${is_snapshot} == 1 ]]; then
    new_version=${new_version}${snapshot_str}
fi
echo new version: [${new_version}]

mvn versions:set -DnewVersion=${new_version} && mvn versions:commit
作者:admin  创建时间:2023-07-12 17:42
最后编辑:admin  更新时间:2025-09-19 10:08