重复使用传递依赖?

时间:2013-02-07 07:09:50

标签: java maven dependencies dependency-management

我的项目X取决于项目YZ

项目Y还取决于项目Z

如果我在X中仅指定Y取决于pom.xml,那么一切仍然有效,因为可以传递获得依赖Z

那么在我的Z中是否有任何充分的理由要包含依赖pom.xml?或者把它留下来好吗?

2 个答案:

答案 0 :(得分:3)

这取决于。如果您的项目实际上是使用Y中的类,则没有理由明确声明对Z的依赖,因为Y取决于Z }}

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

答案 1 :(得分:0)

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

  • 您可能需要查看此discussion。如果在X的代码中使用Z,则明确地将Z作为依赖项添加到X可能会导致一些问题。例如,如果您将Z添加为测试依赖项(因为您仅将其用于测试),Z将不会包含在主类路径中,并且您将遇到一些问题,因为Y使用的类将不会出现。

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