Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种简单的方法可以从maven pom.xml中删除未使用的依赖项?_Maven_Maven 2 - Fatal编程技术网

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

有没有一种简单的方法可以从maven pom.xml中删除未使用的依赖项?,maven,maven-2,Maven,Maven 2,我有一个大型Maven项目,其中包含许多模块和许多pom.xml文件。项目已经更改,我怀疑pom包含一些不必要的依赖项。是否有从pom中删除任何未使用依赖项的命令 你看过那张照片了吗?这不会为您删除内容,但有工具允许您自己进行分析。我特别想到 mvn dependency:tree 这将有所帮助,尤其是依赖关系:分析目标: 依赖关系:分析分析此项目的依赖关系,并确定哪些是:已使用和已声明的;使用和未申报;未使用和声明 另一件可能有助于进行某些清理的事情是来自。正如其他人所说,您可以使用目标来查

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

你看过那张照片了吗?这不会为您删除内容,但有工具允许您自己进行分析。我特别想到

mvn dependency:tree
这将有所帮助,尤其是
依赖关系:分析
目标:

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


另一件可能有助于进行某些清理的事情是来自。

正如其他人所说,您可以使用目标来查找使用和声明的依赖项、使用和未声明的依赖项或未使用和声明的依赖项。在dependencyManagement部分中查找不匹配项也会很有用

您可以简单地从POM中删除不需要的直接依赖项,但是如果它们是由第三方JAR引入的,您可以使用依赖项中的标记来排除第三方JAR(有关详细信息和一些讨论,请参阅标题为dependency Exclutions的部分)。下面是一个从Spring依赖项中排除commons日志的示例:

<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>

org.springframework
春天
2.5.5
公用记录
公用记录

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


您可以使用
依赖项:analyze-dignorenocmpile

这将打印已使用的未声明的未使用的已声明的依赖项列表(同时忽略
运行时
/
提供的
/
测试
/
系统
未使用的依赖项分析范围。)

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

非常好-谢谢(在我一直搜索“干净的依赖项”时,找不到我要找的内容,它抛出了干净的插件!!但这看起来很有希望..mvn dependency:analyze)我如何在Eclipse中触发它?请小心dependency:analyze,运行时使用的某些库被视为未使用。为了防止将运行时和提供的依赖项报告为未使用,可以将该选项设置为true。使用依赖项:analyze时要小心,即使我使用的是“ejp api3”依赖项,但报告显示它是“未使用和声明的”,要了解分析结果,请参见以下答案:“使用的未声明依赖项是必需的,但在项目中未明确声明为依赖项。-如果您使用的是IntelliJ,请参见:在死链接的情况下:Jonnyzz依赖项plugin@Benj我试着使用这个Jonnyz插件,但没用。大多数情况下,它不会找到任何未使用的依赖项,有时它会从类路径而不是build.gradle文件中删除依赖项。我甚至找不到合适的文档来解释这个插件是如何工作的。@vaibhav.g谢谢你的更新。自2016年以来,情况似乎发生了变化。(IntelliJ)我使用了Jonnyzz插件,正如对问题的评论。不错的插件,与IntelliJ 2016.1.3配合良好。注意,此脚本不使用
mvn依赖项:analyze
。它只是尝试删除每个依赖项,并检查
mvn install
是否工作。[加上]1作为运行时参考!你说得对,有些运行时依赖项被清除为未使用,但实际上是需要的。虽然有用,但仍然不是100%正确。我可以看到Groovy使用的一些依赖项,但仍然列出了它们。