我有一个包含许多模块和许多 pom.xml
文件的大型 Maven 项目。项目发生了变化,我怀疑 pom 包含一些不必要的依赖项。是否有一个命令可以从 pom 中删除任何未使用的依赖项?
Maven Dependency Plugin 将有所帮助,尤其是 dependency:analyze
目标:
dependency:analyze 分析该项目的依赖关系,并确定哪些是:已使用和已声明;使用和未声明;未使用和声明。
可能有助于进行一些清理的另一件事是 Maven Project Info Reports Plugin 中的 Dependency Convergence report。
您可以使用 dependency:analyze -DignoreNonCompile
这将打印已使用的未声明和未使用的已声明依赖项列表(同时忽略未使用的依赖项分析的 runtime
/provided
/test
/system
范围。 )
## 使用时要小心,在 runtime
使用的一些库被认为是未使用的
For more details refer to this link
正如其他人所说,您可以使用 dependency:analyze 目标来查找使用和声明、使用和未声明或未使用和声明的依赖项。您可能还会发现 dependency:analyze-dep-mgt 对于在您的 dependencyManagement 部分中查找不匹配项很有用。
您可以简单地从您的 POM 中删除不需要的直接依赖项,但如果它们是由第三方 jar 引入的,您可以在依赖项中使用 <exclusions>
标记来排除第三方 jar(请参阅标题为 Dependency Exclusions 的部分 了解详细信息和一些讨论)。这是一个从 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 Dependency Plugin 吗?这不会为您删除东西,但有工具可以让您自己进行分析。我特别想
mvn dependency:tree
我遇到了类似的问题,并决定编写一个脚本来为我删除依赖项。使用它,我很容易摆脱了一半以上的依赖关系。
http://samulisiivonen.blogspot.com/2012/01/cleanin-up-maven-dependencies.html
mvn dependency:analyze
。它只是尝试删除所有依赖项并检查 mvn install
是否有效。
您可以使用 DepClean https://github.com/castor-software/depclean/
DepClean 是一个工具,用于自动删除包含在 Java 依赖关系树中但实际上并未在项目代码中使用的依赖关系。
如果您使用的是 eclipse,请右键单击 Maven Dependencies 中的 jar:选择 Maven -> Exclude Maven Artifact...
不定期副业成功案例分享
ignoreNonCompile
选项设置为 true。