之前我发布了一个关于如何从命令行更改Maven项目版本的问题,这引出了一个新问题.
以前我能够获得版本号,因为版本存储为易于grep并从命令行解析的属性(bash).现在pom.xml元素已用于此,它不再是唯一的,因为所有依赖项和其他一些也使用它.我认为没有办法使用bash脚本获取当前版本号,而无需外部工具来解析xml或一些非常上下文的sed命令.
我认为最干净的解决方案是让Maven分发这个版本信息.我正在考虑编写一个自定义maven插件来检索不同的属性,但我想我先问这里.
那么,有没有简单的方法来获得${project.version}命令行的价值?提前致谢.
解
感谢您的帮助.我不得不cd手动到目录,但这可以很容易地完成.在我的bash脚本中我有
version=`cd $project_loc && mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | sed -n -e '/^\[.*\]/ !{ /^[0-9]/ { p; q } }'`
Run Code Online (Sandbox Code Playgroud)
这给了我当前版本,然后我可以推进.Grepping可能更简单,但我认为我想尽可能健壮,所以我对以数字开头的第一行感到满意,并尝试将其作为版本号处理.
# 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))
# …Run Code Online (Sandbox Code Playgroud)