我有一个大型 Maven 项目,其中包含许多模块和许多
pom.xml
文件。该项目已更改,我怀疑 pom 包含一些不必要的依赖项。是否有一个命令可以从 pom 中删除任何未使用的依赖项?
Maven 依赖插件会有所帮助,尤其是
dependency:analyze
目标:
分析该项目的依赖关系并确定哪些是:已使用和已声明;使用过且未申报;未使用并已声明。dependency:analyze
另一件可能有助于清理的事情是来自 Maven 项目信息报告插件的 依赖收敛报告。
dependency:analyze -DignoreNonCompile
。这将打印“未声明的已使用”和“未使用的已声明”依赖项列表(同时忽略未使用的依赖项分析的
runtime
/provided
/test
/system
范围。)
因为
runtime
使用的一些库被认为是未使用的!
正如其他人所说,您可以使用 dependency:analyze 目标来查找使用和声明、使用和未声明或未使用和声明的依赖项。您可能还会发现 dependency:analyze-dep-mgt 对于查找 dependencyManagement 部分中的不匹配项很有用。
您可以简单地从 POM 中删除不需要的直接依赖项,但如果它们是由第三方 jar 引入的,您可以在依赖项中使用
<exclusions>
标签来排除第三方 jar(请参阅标题为 Dependency 的部分)排除以了解详细信息和一些讨论)。这是一个从 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-dependency.html
您可以使用 DepClean https://github.com/castor-software/depclean/
DepClean 是一个自动删除 Java 依赖关系树中包含但项目代码中并未实际使用的依赖关系的工具。
您可以使用 dependency_cleaner https://github.com/junaidbs/dependency_cleaner 这个 jar 将有助于识别并删除 pom.xml 中不需要的依赖项。 它将自动执行删除依赖项的过程并运行,然后检查依赖项是否需要
如果您使用的是 eclipse,请右键单击 Maven 依赖项中的 jar: 选择 Maven -> 排除 Maven Artifact...