代码之家  ›  专栏  ›  技术社区  ›  Guillaume

Maven:我应该保留还是移除声明的依赖项,这些依赖项也是可传递的依赖项?

  •  24
  • Guillaume  · 技术社区  · 14 年前

    您认为移除maven pom中的每个可传递依赖项是一个好的实践吗?

    例子:
    我的计划取决于A和B。
    B也是a的传递依赖项。
    我应该把B放在pom里还是去掉它?

    什么是最好的:
    在pom上声明所有已知的jar,甚至是传递的jar,还是只保留顶级jar?

    这有点主观,但我试图清理一些巨大的pom(父和子)与许多传递依赖。我想保持我的pom尽可能简单,但我也希望它们是可维护的。

    2 回复  |  直到 14 年前
        1
  •  22
  •   lexicore    9 年前

    如果您的项目直接依赖于B,那么即使B是a的可传递依赖项,您也应该保留它。可能是在下一个版本a中不使用B,您将不得不重新构造pom.xml。

    通常,Maven依赖项应该反映逻辑项目依赖项。

        2
  •  14
  •   Koray Tugay    6 年前

    我会的 更喜欢 避免声明可传递依赖项 ,如果有充分的理由,则将它们显式地包含在pom中。以下是我的论点:

    • 我试着 保持pom尽可能简单 . 声明了可传递依赖项后,即使显式使用它们,Maven pom也会变得更加冗长。

    通过声明可传递依赖项(即使您明确需要它们):

    • 在声明中引入了冗余 ,因为此信息已经在 需要的工件 .

    • 如果新版本的 需要工件 不依赖于 transitive dependency 现在,你必须移除 传递依赖 如果是你自己的话 传递依赖 是显式声明的。

    • 传递性的信息通过显式声明传递依赖项来操作。

    这是有道理的 在以下情况下显式包含依赖项:

    • 你有一两个依赖关系,比如说 C D ,需要不同版本的传递依赖项 B (或者您需要 在你的项目中)。在这种情况下,您必须选择 并显式定义传递依赖项 T . (*)

    结论 我会尽量避免声明,除非特别声明工件是有意义的(比如在case(*)中)。