0

我有一个项目X依赖于项目YZ

项目 Y 也依赖于项目 Z

如果我只在 my 中指定X依赖,那么一切仍然有效,因为依赖是传递获得的。Ypom.xmlZ

那么有什么充分的理由将依赖项包含Z在 my 中pom.xml吗?还是把它放在外面就可以了?

4

2 回答 2

3

这取决于。如果您的项目实际上使用类,Y那么没有理由显式声明依赖于,Z因为它Y依赖于Z.

但我见过一些项目实际上使用了一些类YZ但只声明它们依赖于Y. 我认为这是一种不好的做法,因为:a)您没有明确声明所有项目依赖项;b) 如果您更新Y到较新版本,您可能会遇到问题,因为它可能不再依赖Z或依赖可能不包含项目所需类的较新版本。

于 2013-02-07T07:20:19.283 回答
0

我同意安德鲁的回答,但我想补充几点:

  • 你可能想看看这个讨论。如果您在 X 的代码中使用 Z,将 Z 作为依赖项显式添加到 X 可能会给您带来一些问题。例如,如果您将 Z 添加为测试依赖项(因为您仅将其用于测试),则 Z 将不会包含在主类路径中,并且您会遇到一些问题,因为 Y 使用的类将不存在。

  • Maven Enforcer 插件中添加了一个新的强制规则。它允许您更好地控制传递依赖。启用后,所有传递依赖项都将被禁止,您必须明确包含或排除它们。有关更多详细信息,请参见此处

于 2013-02-08T13:02:00.913 回答