我有一个包含大量模块和pom.xmls的大型Maven项目。而且项目已经改变了很多,我确信pom必须有一些不必要的依赖。有没有人知道是否有一个命令可以运行从pom中删除任何无意义的依赖项?
答案 0 :(得分:189)
Maven Dependency Plugin会有所帮助,特别是dependency:analyze
目标:
dependency:analyze
分析该项目的依赖关系,并确定哪些是:使用和声明的;使用和未声明;未使用和声明。
可能有助于进行清理的另一件事是来自Dependency Convergence report的Maven Project Info Reports Plugin。
答案 1 :(得分:37)
正如其他人所说,您可以使用dependency:analyze目标来查找使用和声明,使用和未声明,或未使用和声明的依赖项。您还可以发现dependency:analyze-dep-mgt对于查找dependencyManagement部分中的不匹配非常有用。
您可以简单地从POM中删除不需要的直接依赖项,但如果它们是由第三方jar引入的,则可以使用依赖项中的<exclusions>
标记来排除第三方jar(请参阅标题部分) 依赖性排除以获取详细信息和一些讨论)。这是一个不包含Spring依赖项的commons-logging的例子:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.5</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
答案 2 :(得分:31)
你看过Maven Dependency Plugin了吗?这不会删除你的东西,但有工具,让你自己做分析。我特别想到
mvn dependency:tree
答案 3 :(得分:26)
您可以使用dependency:analyze -DignoreNonCompile
这将打印used undeclared
和unused declared
个依赖关系列表(同时忽略未使用的runtime
/ provided
/ test
/ system
范围依赖性分析。)
但 小心使用此功能时,runtime
使用的某些库被视为未使用!
答案 4 :(得分:14)
我有类似的问题,并决定编写一个删除依赖项的脚本。使用它我相当容易地获得了超过一半的依赖。
http://samulisiivonen.blogspot.com/2012/01/cleanin-up-maven-dependencies.html
答案 5 :(得分:1)
如果你使用的是eclipse,在Maven Dependencies中的jar上右键: 选择 Maven -> 排除 Maven Artifact...