有没有一种简单的方法从maven pom.xml中删除未使用的依赖关系?

我有一个大型的Maven项目,有许多模块和pom.xmls。 而且这个项目已经发生了很大的变化,我相信这个pom必须有一些不必要的依赖关系。 有没有人知道是否有一个命令,你可以运行删除任何毫无意义的依赖从一个POM?

Maven依赖插件将有助于,特别是dependency:analyze目标:

dependency:analyze分析这个项目的依赖关系,并确定哪些是:使用和声明; 使用和不申报; 未使用和宣布。

另一个可能有助于做一些清理的事情是来自Maven Project Info Reports Plugin的Dependency Convergence报告 。

正如其他人所说,您可以使用依赖关系:分析目标来查找哪些依赖项被使用和声明,使用和未声明,或者未被使用和声明。 您也可能会发现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> 

你看了Maven的依赖插件吗? 这不会删除你的东西,但有工具,让你自己做分析。 我特别想

 mvn dependency:tree 

我有类似的问题,并决定写一个脚本,为我删除依赖关系。 利用这一点,我相当容易地把一半以上的依赖关系解决了。

http://samulisiivonen.blogspot.com/2012/01/cleanin-up-maven-dependencies.html

你可以使用dependency:analyze -DignoreNonCompile

这将打印一个未使用的未声明和未使用的声明依赖项列表(同时为未使用的依赖关系分析,运行时间/提供/testing/系统范围)。

但是在使用这个时要小心,在运行时使用的一些库被认为是未使用的。

在Ubuntu中,我刚刚使用rm -R〜/ .m2删除了Maven目录。 然后我使用了Eclipse Project-> Clean … Clean项目。 当Eclipse构build项目时,它将为我下载必要的库。