在Maven中拥有父级父级的结果是什么?

时间:2014-03-11 10:33:58

标签: maven parent pom.xml

我有Maven POM文件:

  • 工件 A 是工件的父项 B
  • 工件 B 是工件的父项 C

C可以获得A?

的依赖关系

一般来说,工件 C 的结果是什么?

非常感谢你!

3 个答案:

答案 0 :(得分:2)

Maven项目(几乎)继承其父pom的所有元素,而pom又从其各自的父级继承,依此类推至Super POM(参见http://maven.apache.org/ref/3.2.1/maven-model-builder/)。

所以是的,A中定义的依赖关系会导致C中的依赖。

但是请注意,在父项目中定义依赖项(而不是依赖项管理)通常是一个坏主意,因为您无法阻止您的子项继承它们,从而可能导致不必要的依赖项。因此,您最多应该在父母中包含测试和提供范围的依赖项。

答案 1 :(得分:1)

根据Maven依赖机制,子POM继承了父POM的依赖关系

"可以从...收集依赖关系的级别数量没有限制..."

http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

因此,工件C将具有工件B和工件A的所有依赖关系。

此致 Jyotsna

答案 2 :(得分:1)

是的,依赖关系是从所有祖先项目继承的。为了帮助确定项目的实际依赖关系,Maven Help Plugin提供了effective-pom目标。当执行effective-pom目标时,Maven会为当前构建完成输出有效POM,其中包含有效的配置文件设置和所有父POM设置。要执行目标,只需运行:

mvn help:effective-pom

从输出中,您将看到当前构建所需的所有依赖项,直接,继承和传递。

如果您从 C 项目目录执行此操作,则输出将包含项目 C 的依赖项,项目 B 中的任何继承的依赖项以及项目 A

中的任何其他继承依赖项