我有一个多模块Maven项目,我希望子项目继承我在父项目中指定的第三方依赖项的版本。这样我就不需要在任何地方复制版本号。它不起作用,当我遗漏孩子的版本号时,我得到错误:
dependencies.dependency.version is missing
我需要做些什么来改变它?
答案 0 :(得分:11)
The <dependencyManagement>
section of the parent POM就是为了这个目的:
dependencyManagement
:由POM用于帮助管理其所有子项的依赖关系信息。如果my-parent
项目使用dependencyManagement
来定义对junit:junit:4.0
的依赖关系,那么从这个继承的POM可以设置它们的依赖关系,仅提供groupId=junit
和artifactId=junit
,然后Maven将填写父母设置的version
。这种方法的好处是显而易见的。可以在一个中心位置设置依赖关系详细信息,该位置将传播到所有继承的POM。此外,还可以通过在依赖关系管理部分中指定它们来控制从传递依赖项合并的工件的版本和范围。
答案 1 :(得分:0)
你有战争依赖吗?
有一个开放的jira可能与你面临的问题有关:
(MNG-2241) Versions are required when it shouldn't with multi-modules projects and war dependencies
答案 2 :(得分:0)
我为此做的是定义我需要在父项目中作为属性重复的依赖版本。所以:
<properties>
...
<guice.version>2.0</guice.version>
</properties>
然后:
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>${guice.version}</version>
</dependency>
不完全是你要求的,但这意味着你只需要在一个地方更改版本。