如何将Maven项目版本获取到bash命令行

姆科

上一章我提出了一个有关如何从命令行更改Maven项目版本的问题,这导致我遇到了新问题。

以前,我能够获得版本号,因为版本存储为易于通过命令行(bash)进行grep和解析的属性。既然为此使用了pom.xml<version>元素,则它不再是唯一的,因为所有依赖项(也许还有其他依赖项)也都使用了此。我认为这是没有办法得到一个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 } }'`

这给了我当前的版本,然后我可以进行升级。暂存可能更简单,但是我想我想尽可能地强大,所以我对以数字开头的第一行感到满意,并尝试将其作为版本号进行处理。

# 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/"
}

我通过简单地调用来使用它:

new_version=$(advance_version $version)
帕斯卡·蒂文(Pascal Thivent)

Maven的帮助插件以某种方式已经提出的东西这样的:

  • help:evaluate 以交互方式评估用户给出的Maven表达式。

这是您在命令行上调用它以获取的方式${project.version}

mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate \
    -Dexpression=project.version

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章