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
注意:我的运行时容器中使用了很多这些依赖项,我将它们声明为已提供,以避免在类路径上两次使用不同版本的相同库。
原文由 b7kich 发布,翻译遵循 CC BY-SA 4.0 许可协议
不确定 Maven 如何确定这一点。不需要解决此报告的所有项目,但可以酌情使用此信息。
使用的未声明依赖项 是那些必需的,但尚未在您的项目中明确声明为依赖项的依赖项。然而,由于项目中其他依赖项的传递依赖性,它们是可用的。显式声明这些依赖项是个好主意。这也允许您控制这些依赖项的版本(可能与您的运行时提供的版本相匹配)。
至于 未使用的声明依赖 项,删除它们是个好主意。为什么要给你的项目添加不必要的依赖?但是传递性无论如何都会带来这些,也许与您的运行时版本冲突。在这种情况下,您需要指定它们——主要是为了控制
version
。顺便说一下,
mvn dependency:tree
给出了项目的 _依赖关系树_,它让你更好地了解每个依赖关系如何适应你的项目。