繁体   English   中英

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

[英]Is there a simple way to remove unused dependencies from a maven pom.xml?

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

Maven Dependency Plugin会有所帮助,尤其是dependency:analyze目标:

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

另一件可能有助于清理的事情是来自Maven Project Info Reports PluginDependency Convergence 报告

您可以使用dependency:analyze -DignoreNonCompile

这将打印使用的未声明未使用的声明依赖项列表(同时忽略runtime / provided / test / system范围以进行未使用的依赖项分析。)

** 使用时要小心, runtime使用的一些库被认为是未使用的 **

有关更多详细信息,请参阅此链接

正如其他人所说,您可以使用dependency:analyze目标来查找已使用和已声明、已使用和未声明或未使用并已声明的依赖项。 您可能还会发现dependency:analyze-dep-mgt在您的 dependencyManagement 部分中查找不匹配时很有用。

你可以简单地从你的POM中删除不需要直接依赖关系,但如果他们是由第三方罐子介绍,您可以使用<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 Dependency Plugin吗? 这不会为您删除内容,但具有允许您自己进行分析的工具。 我特别想

mvn dependency:tree

我遇到了类似的问题,并决定编写一个脚本来为我删除依赖项。 使用它,我很容易地消除了一半以上的依赖项。

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

如果您使用的是 Eclipse,请右键单击 Maven Dependencies 中的 jar:选择 Maven -> Exclude Maven Artifact...

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

DepClean 是一种工具,用于自动删除包含在 Java 依赖项树中但实际上并未在项目代码中使用的依赖项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM