有没有一种简单的方法从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项目时,它将为我下载必要的库。