Maven - 我应该直接在依赖树中使用jar吗?

时间:2013-08-06 08:51:52

标签: maven maven-2 dependencies maven-3

假设现有的项目依赖树是:

     MyProject:jar:0.1.0
     +- DependencyJar:jar:1.0.3:compile
     |  +- com.google.guava:guava:jar:14.0:compile

我想从现在开始使用guava

我的问题是我应该只在我的pom.xml中定义DependencyJarDependencyJar and guava吗?

最佳做法是什么? 感谢。

3 个答案:

答案 0 :(得分:2)

最佳做法是在pom.xml中声明项目直接使用的所有依赖项。

您不应该依赖传递行为,因为DependencyJar以后可以选择从其依赖项中删除guava。因此,DependencyJar的升级可能导致MyProject无法编译。

此最佳做法与maven dependency plugin's analyze-mojo行为一致,可以告诉您使用的pom.xml中未声明的依赖项。

答案 1 :(得分:1)

我强烈建议将直接依赖项添加到您需要编译的所有代码中。

如果当前依赖关系的未来版本突然不再使用传递依赖关系,您可能很难找到问题并进行修复。

了解您的直接依赖关系也非常有用。

Maven Dependency Plugin可以帮助您进行分析。

答案 2 :(得分:1)

如果从父母那里传递它并且你确定它总是在那里,那么它不是必需的,但是强烈建议直接在你的pom文件中提到所有的依赖项。取决于

作为了解依赖关系如何在您的项目结构中流动的插件,我建议您阅读Maven Dependency Scopes,这将为您提供更清晰的问题视图