我有一个大型的Maven项目,其中包含许多模块和许多pom.xml
文件。该项目已更改,我怀疑pom包含一些不必要的依赖项。有没有从pom删除任何未使用的依赖项的命令?
我有一个大型的Maven项目,其中包含许多模块和许多pom.xml
文件。该项目已更改,我怀疑pom包含一些不必要的依赖项。有没有从pom删除任何未使用的依赖项的命令?
Answers:
在Maven的依赖插件会有所帮助,尤其是dependency:analyze
目标:
dependency:analyze
分析该项目的依赖关系,并确定以下内容:使用和声明;使用和未声明的;未使用和声明。
这可能有助于做一些清理工作的另一件事情是依赖趋同报告从Maven项目信息报告插件。
ignoreNonCompile
可以将该选项设置为true。
您可以使用 dependency:analyze -DignoreNonCompile
这将打印列表中使用未申报的和未使用的声明依赖(而忽略runtime
/ provided
/ test
/ system
未使用的依赖性分析范围。)
使用此库时要小心,一些在使用的库runtime
被视为未使用!
正如其他人所说,您可以使用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>
我遇到了类似的问题,因此决定编写一个脚本来为我删除依赖项。使用它,我可以轻松摆脱一半以上的依赖关系。
http://samulisiivonen.blogspot.com/2012/01/cleanin-up-maven-dependencies.html
mvn dependency:analyze
。它只是尝试删除所有依赖项并检查是否mvn install
有效。