我有一个包含大量模块和pom.xmls的大型Maven项目 . 而且项目已经改变了很多,我确信pom必须有一些不必要的依赖关系 . 有没有人知道是否有一个命令可以运行从pom中删除任何无意义的依赖项?
Maven Dependency Plugin会有所帮助,尤其是 dependency:analyze 目标:
dependency:analyze
dependency:analyze分析这个项目的依赖关系,并确定哪些是:used和声明的;使用和未声明;未使用和声明 .
可能有助于进行清理的另一件事是来自Maven Project Info Reports Plugin的Dependency Convergence report .
正如其他人所说,您可以使用dependency:analyze目标来查找使用和声明,使用和未声明,或未使用和声明的依赖项 . 您可能还会发现dependency:analyze-dep-mgt可用于查找dependencyManagement部分中的不匹配项 .
您可以简单地从POM中删除不需要的直接依赖项,但如果它们是由第三方jar引入的,则可以使用依赖项中的<exclusions>标记来排除第三方jar(有关详细信息和一些讨论,请参阅 Headers 为“依赖项排除”的部分) ) . 这是一个从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吗?那赢得了't remove stuff for you but has tools to allow you to do the analysis yourself. I'm特别想到的
mvn dependency:tree
你可以使用dependency:analyze -DignoreNonCompile
这将打印 used undeclared 和 unused declared 依赖项的列表(同时忽略未使用的依赖项分析的 runtime / provided / test / system 范围 . )
used undeclared
unused declared
runtime
provided
test
system
但是在使用它时要小心, runtime 使用的一些库被认为是未使用的!
我有类似的问题,并决定编写一个脚本,为我删除依赖项 . 使用它我很容易得到一半以上的依赖 .
http://samulisiivonen.blogspot.com/2012/01/cleanin-up-maven-dependencies.html
5 回答
Maven Dependency Plugin会有所帮助,尤其是
dependency:analyze
目标:可能有助于进行清理的另一件事是来自Maven Project Info Reports Plugin的Dependency Convergence report .
正如其他人所说,您可以使用dependency:analyze目标来查找使用和声明,使用和未声明,或未使用和声明的依赖项 . 您可能还会发现dependency:analyze-dep-mgt可用于查找dependencyManagement部分中的不匹配项 .
您可以简单地从POM中删除不需要的直接依赖项,但如果它们是由第三方jar引入的,则可以使用依赖项中的<exclusions>标记来排除第三方jar(有关详细信息和一些讨论,请参阅 Headers 为“依赖项排除”的部分) ) . 这是一个从Spring依赖项中排除commons-logging的示例:
你看过Maven Dependency Plugin吗?那赢得了't remove stuff for you but has tools to allow you to do the analysis yourself. I'm特别想到的
你可以使用dependency:analyze -DignoreNonCompile
这将打印
used undeclared
和unused declared
依赖项的列表(同时忽略未使用的依赖项分析的runtime
/provided
/test
/system
范围 . )但是在使用它时要小心,
runtime
使用的一些库被认为是未使用的!我有类似的问题,并决定编写一个脚本,为我删除依赖项 . 使用它我很容易得到一半以上的依赖 .
http://samulisiivonen.blogspot.com/2012/01/cleanin-up-maven-dependencies.html