您是否认为删除maven pom中可以找到的每个传递依赖项是一种好习惯?
例:
我的项目取决于A和B.
B也是A.的传递依赖
我应该将B放在我的pom中还是将其取出?
什么是最好的:
拥有所有已知的罐子,甚至是传递的罐子,在pom上宣称或只保留顶级罐子?
这有点主观,但我试图用一些传递依赖来清理一些巨大的poms(父母和孩子)。我想让我的pom尽可能简单,但我也希望它们可以维护。
答案 0 :(得分:22)
如果你的项目直接依赖于B,那么你应该保留它,即使B是A的传递依赖关系。可能是在下一个版本A中不会使用B,你必须重新构造pom。 XML。
通常,Maven依赖项应该反映逻辑项目依赖项。
答案 1 :(得分:12)
我更喜欢来避免传递依赖性的声明,并且如果有充分的理由那么明确地将它们包含在pom中。以下是我的论点:
通过声明传递依赖(即使您明确需要它们):
引入了声明中的冗余,因为此信息已经存在于工件的pom描述符中。
如果新版本的工件不再依赖于transitive dependency
,则必须自行从程序集中删除transitive dependency
,如果是transitive dependency
已明确声明。
通过明确声明传递依赖性来操纵传递性信息。
在以下情况中明确包含依赖关系:
C
和D
,它们需要不同版本的传递依赖项B
(或者您需要特定版本的B
项目)。在这种情况下,您必须选择B
的版本并明确定义传递依赖T
。 (*)<强>结论强>: 我会尽量避免声明,除非特意声明工件是有意义的(如在案例(*)中)。