您认为删除可以在 maven pom 中找到的所有传递依赖项是一个好习惯吗?
示例:
我的项目依赖于 A 和 B。B
也是 A 的传递依赖。
我应该将 B 保留在我的 pom 中还是删除它?
什么是最好的:
在 pom 上声明所有已知的罐子,甚至是传递的罐子,还是只保留顶级罐子?
这有点主观,但我正在尝试清理一些具有大量传递依赖项的巨大 pom(父子节点)。我想让我的 pom 尽可能简单,但我也希望它们是可维护的。
您认为删除可以在 maven pom 中找到的所有传递依赖项是一个好习惯吗?
示例:
我的项目依赖于 A 和 B。B
也是 A 的传递依赖。
我应该将 B 保留在我的 pom 中还是删除它?
什么是最好的:
在 pom 上声明所有已知的罐子,甚至是传递的罐子,还是只保留顶级罐子?
这有点主观,但我正在尝试清理一些具有大量传递依赖项的巨大 pom(父子节点)。我想让我的 pom 尽可能简单,但我也希望它们是可维护的。
如果您的项目直接依赖于 B,那么即使 B 是 A 的传递依赖项,您也应该保留它。可能在下一个版本中,A 不会使用 B,您将不得不重新构建 pom.xml。
通常,Maven 依赖项应该反映逻辑项目依赖项。
如果有充分的理由,我宁愿避免传递依赖项的声明,并明确地将它们包含在 pom 中。以下是我的论点:
通过声明传递依赖项(即使您明确需要它们):
在声明中引入了冗余,因为此信息已经在所需工件的 pom 描述符中。
如果所需工件的新版本不再依赖于transitive dependency
,您必须transitive dependency
自己从程序集中删除 (如果transitive dependency
已明确声明)。
通过显式声明传递依赖关系来操纵传递性信息。
在以下情况下显式包含依赖项是有意义的:
C
和D
,它们需要不同版本的传递依赖项B
(或者您需要项目中的特定版本B
)。在这种情况下,您必须选择一个版本B
并明确定义传递依赖T
。(*)结论:我会尽量避免声明,除非明确声明工件是有意义的(如案例(*))。