在行家它是很容易与以下语法,在POM来设置属性:在Maven中,我如何在运行时动态构建属性值?
...
<properties>
<myValue>4.06.17.6</myValue>
</properties>
...
现在我需要建立这取决于我的POM的版本属性。为了创建属性我想要做以下(java的伪代码):
String[] parts = version.split("\\.");
String.format("V%s_%s_%s_P%s", splitted[0], splitted[1],splitted[2],splitted[3]);
// example: 4.06.17.6 => V_4_06_17_P6
应该是动态的,因为它被用作我们的资料库标签名称,必须始终保持同步的版本神器。
任何想法如何创建“动态”属性?
并且如果我没有将插件绑定到某个阶段。我使用Maven发布插件并调用目标版本:准备。如何使它在这里可用? – EhmKah 2012-08-17 09:52:07
如果您没有指定阶段,默认情况下它会绑定到“validate”阶段,所以上面的代码片段将在validate阶段处于活动状态时执行目标。当你直接调用一个目标时,例如'release:prepare',会发生什么是maven直接跳过任何生命周期阶段的目标,所以'release:prepare'目标本身不会看到属性*,但'release:prepare'会看到生命周期*分叉*它。因此,'release:prepare'将无法使用该属性来标记SCM,但该属性将出现在发布插件运行的分支构建中 – 2012-08-17 09:59:21
如果您想要基于属性获得SCM标记(应该更新你的问题反映这是你的目标,或者开始第二个问题),那么你可能需要使用类似http://maven.apache.org/plugins/maven-release-plugin/prepare-mojo.html#tagNameFormat那不会给你你想要的'_'替换和'_P'注入。我建议更改标签名称要求,而不是试图弯曲Maven ;-) – 2012-08-17 10:02:40