从脚本更新Maven项目版本

时间:2010-08-19 05:36:02

标签: maven-2 command-line

首先,我确实有一些理解,以下可能不是普遍接受的做事方式。

我们有一个Maven 2项目,其版本号应该在新版本中每周更新一次。在这个过程中,我试图消除所有必须记住的事情,并且我已经创建了一个以交互方式处理该过程的bash脚本。

但是,我的问题是从命令行更新pom版本。我可以用sed做到这一点,但我不认为这很方便。我想知道是否有任何maven插件可以直接从命令行修改pom.xml。该版本在pom的属性部分中设置。是否可以编写一个可以改变属性的插件?

提前致谢。

更新

似乎我的问题是将项目版本定义为属性(在过滤时应用),现在看起来有点愚蠢。

我还在寻找答案的一件事是如何将某个项目的版本可靠地送到命令行。以前我使用grep获得了“非常独特”的属性,但现在<version>元素并不是唯一的,因为在子项目中至少有两个。如果Maven没有解决方案,我需要某种XML解析器,但我的目标是使脚本尽可能独立。

我不确定我是否应该从中创建一个新问题,但我没有。获取版本与设置版本密切相关。

2 个答案:

答案 0 :(得分:14)

  

我想知道是否有任何maven插件可以直接从命令行修改pom.xml。

Versions Maven Plugin可以做到这一点。检查以下目标:

  • versions:set可用于从命令行设置项目版本,根据需要更新任何子模块的详细信息。

答案 1 :(得分:1)

来自Maven POM reference

  

env.X:用变量前缀变量   “ENV。”将返回shell   环境变量。例如,   $ {env.PATH}包含PATH   环境变量。注意:虽然   环境变量本身就是   在Windows上不区分大小写,查找   属性区分大小写。其他   单词,而Windows shell返回   %PATH%和%Path%的值相同,   Maven区分   $ {env.PATH}和$ {env.Path}。作为   Maven 2.1.0,环境名称   变量归一化为全部   大写为了   可靠性。

这意味着您可以拥有一个像$ MYMAVENPROJECTVERSION这样的环境变量并将其读取为:

<version>${env.MYMAVENPROJECTVERSION}</version>

您可以在运行build之前每周更新此环境变量。

希望这会对你有所帮助。