我有一个多模块(聚合器)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似乎对此非常不满意.我也不能完全删除版本参考.
有没有人对此有一个好的答案?
通常,如果您使用maven来管理版本,那么将父版本放在子模块pom中就不是问题.当您运行maven发布插件时,它将为您更新所有子模块中的所有版本.
更新:
如果你想自己管理版本,那么你可能会有点痛苦.我很确定你必须至少在每个pom中指定版本号一次.您可以通过编写一些脚本进行递归搜索并替换为您(而不是手动执行)来为自己简化操作.
作为一个侧面背景:maven建立了"最佳(maven)做事方式"的心态.如果你遵循这种方式,事情往往非常简单,工作得很好.以不同的方式做事往往是可能的,但是你越是从"最好的方式"得到的,那就是更痛苦(或不可能)的事情.