gpt4 book ai didi

java - Maven 中未使用/未声明的依赖项是什么?该怎么办?

转载 作者:行者123 更新时间:2023-12-03 05:35:54 30 4
gpt4 key购买 nike

Maven dependency:analyze 提示我的项目中的依赖项。它如何确定哪些未使用、哪些未声明?我该怎么办?

示例:

$ mvn dependency:analyze 
...
[WARNING] Used undeclared dependencies found:
[WARNING] org.slf4j:slf4j-api:jar:1.5.0:provided
[WARNING] commons-logging:commons-logging:jar:1.1.1:compile
[WARNING] commons-dbutils:commons-dbutils:jar:1.1-osgi:provided
[WARNING] org.codehaus.jackson:jackson-core-asl:jar:1.6.1:compile

...
[WARNING] Unused declared dependencies found:
[WARNING] commons-cli:commons-cli:jar:1.0:compile
[WARNING] org.mortbay.jetty:servlet-api:jar:2.5-20081211:test
[WARNING] org.apache.httpcomponents:httpclient:jar:4.0-alpha4:compile
[WARNING] commons-collections:commons-collections:jar:3.2:provided
[WARNING] javax.mail:mail:jar:1.4:provided

注意:我的运行时容器中使用了许多这些依赖项,我按照提供的方式声明了它们,以避免在类路径上两次使用不同版本的相同库。

最佳答案

不确定 Maven 如何确定这一点。不需要解决由此报告的所有项目,但可以酌情使用此信息。

使用的未声明的依赖项是那些必需的,但尚未在项目中显式声明为依赖项的依赖项。然而,由于项目中其他依赖项的传递依赖,它们是可用的。显式声明这些依赖项是个好主意。这还允许您控制这些依赖项的版本(可能与运行时提供的版本匹配)。

对于未使用的已声明依赖项,最好删除它们。为什么要向您的项目添加不必要的依赖项?但是传递性无论如何都会带来这些,也许与您的运行时版本发生冲突。在这种情况下,您需要指定它们 - 主要是为了控制版本

顺便说一句,mvn dependency:tree 提供了项目的依赖关系树,这使您可以更好地了解每个依赖关系如何适合您的项目。

关于java - Maven 中未使用/未声明的依赖项是什么?该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4565740/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com