假设现有的项目依赖树是:
MyProject:jar:0.1.0
+- DependencyJar:jar:1.0.3:compile
| +- com.google.guava:guava:jar:14.0:compile
我想从现在开始使用guava
。
我的问题是我应该只在我的pom.xml中定义DependencyJar
或DependencyJar and guava
吗?
最佳做法是什么? 感谢。
答案 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,这将为您提供更清晰的问题视图