我的项目X
取决于项目Y
和Z
项目Y还取决于项目Z
如果我在X
中仅指定Y
取决于pom.xml
,那么一切仍然有效,因为可以传递获得依赖Z
。
那么在我的Z
中是否有任何充分的理由要包含依赖pom.xml
?或者把它留下来好吗?
答案 0 :(得分:3)
这取决于。如果您的项目实际上是使用Y
中的仅类,则没有理由明确声明对Z
的依赖,因为Y
取决于Z
}}
但我看到的项目实际上使用了来自Y
和Z
的某些类,但只声明它们依赖于Y
。我认为这是一个不好的做法,因为:a)你没有明确声明所有项目依赖项; b)如果您将Y
更新为较新版本,则可能会遇到问题,因为它可能不再依赖Z
或依赖于可能不包含项目所需类的较新版本。
答案 1 :(得分:0)
我同意安德鲁的回答,但我想补充一些观点:
您可能需要查看此discussion。如果在X的代码中使用Z,则明确地将Z作为依赖项添加到X可能会导致一些问题。例如,如果您将Z添加为测试依赖项(因为您仅将其用于测试),Z将不会包含在主类路径中,并且您将遇到一些问题,因为Y使用的类将不会出现。
Maven Enforcer插件中添加了一条新的强制执行规则。它允许您更好地控制传递依赖。启用后,将禁止所有传递依赖项,您必须明确包含或排除它们。有关详细信息,请参阅here。