我有一个大的Maven项目,有许多模块和许多pom.xml文件。项目已经更改,我怀疑pom包含一些不必要的依赖项。是否有一个命令可以从pom中删除任何未使用的依赖项?
pom.xml
你看过Maven依赖插件吗?它不会为你删除东西,但有工具让你自己做分析。我特别想到的
mvn dependency:tree
Maven依赖插件会有所帮助,尤其是dependency:analyze目标:
dependency:analyze
dependency:analyze分析这个项目的依赖项,并确定哪些是:使用的和声明的;使用的和未申报的;未使用并声明。
另一个可能有助于做一些清理的东西是Maven项目信息报告插件中的依赖性收敛报告。
正如其他人所说,你可以使用依赖:分析目标来查找哪些依赖项被使用和声明,哪些依赖项被使用和未声明,哪些依赖项未使用和声明。你可能还会发现依赖:analyze-dep-mgt在dependencyManagement部分中用于查找不匹配。
你可以简单地从POM中删除不需要的直接依赖项,但如果它们是由第三方jar引入的,你可以在依赖项中使用<exclusions>标记来排除第三方jar(有关详细信息和一些讨论,请参阅依赖除外部分)。下面是一个从Spring依赖中排除common -logging的例子:
<exclusions>
<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
你可以使用dependency:analyze -DignoreNonCompile
dependency:analyze -DignoreNonCompile
这将打印使用未申报和未使用的声明依赖项的列表(同时忽略runtime/provided/test/system范围,用于未使用的依赖项分析)。
runtime
provided
test
system
使用时要小心,在runtime中使用的一些库被认为是未使用的
更多详细信息请参阅此链接
你可以使用DepClean https://github.com/castor-software/depclean/
DepClean是一个自动删除包含在Java依赖树中但实际没有在项目代码中使用的依赖项的工具。
你可以使用dependency_cleaner https://github.com/junaidbs/dependency_cleaner 这个罐子将帮助识别和删除pom中不需要的依赖项。 它将自动执行删除依赖项的过程,然后运行检查依赖项是否需要