b7k*_*ich 62 dependencies maven-2 maven
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
Run Code Online (Sandbox Code Playgroud)
注意:我的运行时容器中使用了很多这些依赖项,并且我将它们声明为提供它们以避免在类路径上使用不同版本两次使用相同的库.
Rag*_*ram 75
不确定Maven如何判断这一点.不需要解决此报告的所有项目,但可以酌情使用此信息.
使用的未声明的依赖项是必需的,但尚未在项目中显式声明为依赖项.但是,由于项目中其他依赖项的传递依赖性,它们可用.显式声明这些依赖项是个好主意.这也允许您控制这些依赖项的版本(可能与运行时提供的版本匹配).
至于未使用的声明依赖项,最好删除它们.为什么要为项目添加不必要的依赖?但是,传递性可能会带来这些,或许与您的运行时版本冲突.在这种情况下,您需要指定它们 - 主要是为了控制它们version.
顺便说一句,mvn dependency:tree给出项目的依赖树,它可以让您更好地了解每个依赖项如何适合您的项目.
使用未声明的依赖项
简单地说,它们是您正在使用它们但没有在 POM 文件中显式声明它们的传递依赖项。
提示:
最好在 POM 文件中声明它们与第一级依赖项松散耦合,因此将来如果他们计划更改其实现并且不再使用这种传递依赖项,您的应用程序将是安全的!
未使用声明的依赖项简单地说,它们是您在 POM 文件中声明的
依赖项在应用程序代码中使用它们。
提示:
最好从 POM 文件中删除它们,因为它们没有被使用,并且保存应用程序工件的最终大小,也可以避免任何开发人员错误地使用错误的类!
答案是:
"它如何确定未使用哪些以及哪些未申报?".
Maven使用Object WebASM框架来分析原始字节码.它遍历所有类,然后构建这些引用的所有类的列表.那是怎么回事.
至于做什么,我不建议删除"未使用的,声明的dependecies"除非你绝对确定他们实际上没用.
| 归档时间: |
|
| 查看次数: |
27517 次 |
| 最近记录: |