有没有一种简单的方法可以从 Maven pom.xml 中删除未使用的依赖项?

问题描述 投票:0回答:8

我有一个大型 Maven 项目,其中包含许多模块和许多

pom.xml
文件。该项目已更改,我怀疑 pom 包含一些不必要的依赖项。是否有一个命令可以从 pom 中删除任何未使用的依赖项?

maven maven-2
8个回答
261
投票

Maven 依赖插件会有所帮助,尤其是

dependency:analyze
目标:

dependency:analyze
分析该项目的依赖关系并确定哪些是:已使用和已声明;使用过且未申报;未使用并已声明。

另一件可能有助于清理的事情是来自 Maven 项目信息报告插件依赖收敛报告


107
投票

您可以使用
dependency:analyze -DignoreNonCompile

这将打印“未声明的已使用”“未使用的已声明”依赖项列表(同时忽略未使用的依赖项分析的

runtime
/
provided
/
test
/
system
范围。)

但是使用时要小心:

因为

runtime
使用的一些库被认为是未使用的!

更多详情请参考此链接


48
投票

正如其他人所说,您可以使用 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>

38
投票

您看过 Maven 依赖插件 吗?这不会为您删除任何东西,但有工具可以让您自己进行分析。我特别想

mvn dependency:tree

13
投票

我遇到了类似的问题,并决定编写一个脚本来为我删除依赖项。使用它,我可以轻松地摆脱一半以上的依赖关系。

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


3
投票

您可以使用 DepClean https://github.com/castor-software/depclean/

DepClean 是一个自动删除 Java 依赖关系树中包含但项目代码中并未实际使用的依赖关系的工具。


0
投票

您可以使用 dependency_cleaner https://github.com/junaidbs/dependency_cleaner 这个 jar 将有助于识别并删除 pom.xml 中不需要的依赖项。 它将自动执行删除依赖项的过程并运行,然后检查依赖项是否需要


-3
投票

如果您使用的是 eclipse,请右键单击 Maven 依赖项中的 jar: 选择 Maven -> 排除 Maven Artifact...

© www.soinside.com 2019 - 2024. All rights reserved.