对我来说,maven
非常适合管理jar文件之间的依赖关系。但
还有一件事让我感到困惑 - 关于不必要的依赖,
例如,我们可能有pom.xml
表示神器A依赖于B,而B依赖于C.但是有额外的信息(通过电子邮件,论坛等)告诉我们A没有真正使用C.这个例子就是这个
[INFO] +- org.apache.hive:hive-exec:jar:2.3.0:compile
[INFO] | +- ...
[INFO] | +- org.apache.calcite:calcite-core:jar:1.10.0:compile
[INFO] | | +- ...
[INFO] | | \- org.pentaho:pentaho-aggdesigner-algorithm:jar:5.1.5-jhyde:compile
C的作者(在本例中为org.pentaho:pentaho-aggdesigner-algorithm
)会
告诉我(通过互联网论坛)(link):
请注意,当Hive使用Calcite时,它不会使用 pentaho-aggdesigner-algorithm(在编译时或运行时), 所以你可以安全地排除这种依赖。
我知道如何排除依赖关系,我的问题是这里是否存在
一种更智能的方法来确定依赖关系不是真的
需要?或者我们真的依赖pom.xml
来表达非常准确
他们的依赖?
我的另一个例子是:我看到了这种依赖:
[INFO] +- org.apache.hadoop:hadoop-common:jar:2.7.3:compile
[INFO] | +- org.apache.hadoop:hadoop-annotations:jar:2.7.3:compile
[INFO] | | \- jdk.tools:jdk.tools:jar:1.8:system
我怀疑对jdk.tools
的依赖不是
真的需要。但我怎么知道呢?在那儿
比试错更好的方式或联系开发人员?