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

use*_*173 9 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>
Run Code Online (Sandbox Code Playgroud)

我想让所有子模块继承父版本号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>
Run Code Online (Sandbox Code Playgroud)

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

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

jta*_*orn 7

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

更新:

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

作为一个侧面背景:maven建立了"最佳(maven)做事方式"的心态.如果你遵循这种方式,事情往往非常简单,工作很好.以不同的方式做事往往是可能的,但是你越是从"最好的方式"得到的,那就是更痛苦(或不可能)的事情.