Make Maven child poms与父母有相同的版本号吗?

时间:2014-06-25 18:31:43

标签: java maven

我有一个多模块(聚合器)Maven项目,它也从父pom继承属性。所以在我的父pom.xml中我有这个:

<groupId>com.something.project</groupId>
<artifactId>MyProject</artifactId>
<packaging>pom</packaging>
<version>1.0.123</version>

<modules>
    <module>ModuleA</module>
    <module>ModuleB</module>
    <module>ModuleC</module>
</modules>

我希望所有子模块都继承父版本号1.0.123,但是子pom.xml要求我继续硬编码父版本号(ModuleA pom.xml)示例):

<artifactId>ModuleA</artifactId>
<name>Some Amazing Thing</name>

<parent>
    <relativePath>../</relativePath>
    <artifactId>MyProject</artifactId>
    <version>1.0.123</version>
    <groupId>com.something.project</groupId>
</parent>

如何将版本号放在父pom中,让模块继承它而不必在多个位置更新它?到目前为止,我已经尝试了$ {project.version}和$ {project.parent.version},Maven似乎对此非常不满意。我也不能完全删除版本参考。

有人对此有一个好的答案吗?

2 个答案:

答案 0 :(得分:7)

通常,如果您使用maven来管理版本,那么将父版本放在子模块pom中就不会有问题。当你运行maven发布插件时,它会为你更新所有子模块中的所有版本。

更新:

如果你想自己管理版本,那么你可能会有点痛苦。我非常确定您必须至少在每个pom中指定一次版本号。您可以通过编写一些脚本进行递归搜索并替换为您(而不是手动执行)来简化自己的事情。

作为一个侧面背景:maven是用最好的(maven)做事方式建立的#34;心理。如果你遵循这种方式,事情往往非常简单,而且非常。以不同的方式做事往往是可能的,但是你从“最好的方式”中得到的越多,就会有更痛苦(或不可能)的事情。

答案 1 :(得分:2)

我认为这已经被回答了@ Can you inherit the version from the parent POM in Maven?

我尝试了解决方案,它适用于我(使用Apache Maven 3.0.5)。但是,它有局限性,如果我们直接进入子pom并构建,它将无法解析版本变量。