首页 文章

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

提问于
浏览
212

我有一个包含大量模块和pom.xmls的大型Maven项目 . 而且项目已经改变了很多,我确信pom必须有一些不必要的依赖关系 . 有没有人知道是否有一个命令可以运行从pom中删除任何无意义的依赖项?

5 回答

  • 13

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

    dependency:analyze分析这个项目的依赖关系,并确定哪些是:used和声明的;使用和未声明;未使用和声明 .

    可能有助于进行清理的另一件事是来自Maven Project Info Reports PluginDependency Convergence report .

  • 34

    正如其他人所说,您可以使用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>
    
  • 26

    你看过Maven Dependency Plugin吗?那赢得了't remove stuff for you but has tools to allow you to do the analysis yourself. I'm特别想到的

    mvn dependency:tree
    
  • 15

    你可以使用dependency:analyze -DignoreNonCompile

    这将打印 used undeclaredunused declared 依赖项的列表(同时忽略未使用的依赖项分析的 runtime / provided / test / system 范围 . )

    但是在使用它时要小心, runtime 使用的一些库被认为是未使用的!

  • 178

    我有类似的问题,并决定编写一个脚本,为我删除依赖项 . 使用它我很容易得到一半以上的依赖 .

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

相关问题