我有一个多模块(聚合器)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似乎对此非常不满意。我也不能完全删除版本参考。
有人对此有一个好的答案吗?
答案 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并构建,它将无法解析版本变量。