Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
maven:确定不必要依赖关系的更智能的方法?_Maven - Fatal编程技术网

maven:确定不必要依赖关系的更智能的方法?

maven:确定不必要依赖关系的更智能的方法?,maven,Maven,对我来说,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:

对我来说,
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
)将 (通过互联网论坛)告诉我():

请注意,当蜂巢使用方解石时,它不使用方解石 pentaho aggdesigner算法(在编译时或运行时), 因此,您可以安全地排除该依赖关系

我知道如何排除依赖性,我这里的问题是是否存在依赖性 一种更智能的方法来确定依赖关系是否真的不存在 需要?或者我们真的依赖于
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
的依赖性不是很强 真的需要。但我怎么能确定呢?有
一种比反复试验或联系开发人员更好的方法?

除非您有依赖冲突,否则我不会处理它。许多库倾向于在运行时通过字符串名称加载类。即使您编写了一个工具,在运行时加载所有类,以发现哪些JAR未被使用,这也可能无法确定。jar就是一个很好的例子,也许hadoop使用了编译器api,这会使任务更加复杂。但您可以看到,依赖项是从系统、jdk lib目录加载的。