什么是传递Maven依赖?

时间:2017-01-18 17:29:36

标签: maven dependencies

这个问题即将澄清传递依赖究竟是什么以及它在Maven中如何在非常高的水平上运作。

我的定义:在依赖树中,如 A - > B - > C C是A 的传递依赖。假设 B A 中具有范围 compile

如果 C B 中具有范围 compile ,则将 B 声明为 A <的依赖关系< / em>足以使用Maven构建 A 。但是,如果 C B 中提供 范围,那么当Maven构建 A 时,建筑物将不会自动编译< em> A C ,除非 A 在其依赖项中声明 C

这是对的吗?

2 个答案:

答案 0 :(得分:31)

你的假设是正确的。

有两种类型的Maven依赖项:

  • 直接:这些是pom.xml部分下<dependencies/>文件中定义的依赖关系。

  • 传递:这些依赖项是您的直接依赖项的依赖项。

provided范围的依赖关系意味着:

  • 从最终工件中排除(例如,对于war文件,您不希望包含servlet-apiservlet-jsp等)
  • 或覆盖 - 继承这些项目的项目定义版本和/或覆盖范围

答案 1 :(得分:-1)

声明项目时应包含的依赖项 本身是一个依赖项