假设已有的项目依赖树为:
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
最佳做法是什么?谢谢。
假设已有的项目依赖树为:
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
最佳做法是什么?谢谢。
最佳实践是在您pom.xml
的项目直接使用的所有依赖项中声明。
您不应该依赖传递行为,因为以后可以选择从其依赖DependencyJar
项中删除。guava
因此,升级DependencyJar
可能导致MyProject
无法编译。
这个最佳实践与maven 依赖插件的 analyze-mojo行为一致,它可以告诉您使用了未在pom.xml
.
我强烈建议将直接依赖项添加到您需要编译的所有代码中。
如果您当前依赖项的未来版本突然不再使用传递依赖项,您可能很难找到问题并修复它。
了解您的直接依赖关系对于文档目的也很有用。
Maven 依赖插件可以帮助您进行分析。
如果它是从其父代传递过来的,并且您确信它会一直存在,那么它不是必需的,但是强烈建议直接在您的项目所依赖的 pom 文件中提及所有依赖项。
作为了解依赖项如何在您的项目结构中流动的插件,我建议您阅读Maven Dependency Scopes,这将使您更清楚地了解您的问题