【问题标题】:Maven - Detect Multiple Versions of the Same Dependency in a projectMaven - 检测项目中相同依赖项的多个版本
【发布时间】:2018-05-03 23:52:09
【问题描述】:

我有一个庞大的遗留项目,我想清理它。它有许多模块,它们具有相同的依赖关系,但版本不同。由于项目很大,自己找这个是不切实际的。 有没有办法检测项目中不同版本的相同依赖项? 例如

模块 X:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.0</version>
</dependency>

模块 Y:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

【问题讨论】:

    标签: java maven pom.xml


    【解决方案1】:

    你可以使用maven-enforcer-plugin

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-enforcer-plugin</artifactId>
      <version>1.0.1</version>
      <executions>
        <execution>
          <id>enforce</id>
          <configuration>
          <rules>
            <DependencyConvergence />
          </rules>
        </configuration>
        <goals>
          <goal>enforce</goal>
        </goals>
      </execution>
    </executions>
    </plugin>
    

    http://maven.apache.org/enforcer/enforcer-rules/dependencyConvergence.html https://www.ricston.com/blog/solving-dependency-conflicts-maven/

    【讨论】:

    • 这个我也喜欢
    • enforcer 插件是否检测到 不同 模块中的不同版本?我以为它只查看依赖关系:每个模块的树。
    • @JFMeier 如果您从模块 A 运行它,它不会检查模块 B 如果 A 和 B 是一个父级下的兄弟姐妹。但是如果你从父级运行,那么如果父级有 A 和 B 作为依赖项,那么插件应该检查​​它们。如果我正确理解了您的问题
    • @Ivan 谢谢。目前我只想处理我自己的依赖项,而不是所有的瞬态一次。我找不到办法。你知道这是否可能吗?即控制收敛的深度。
    • @Arik 似乎无法限制深度
    【解决方案2】:

    您可以使用 Maven 的 dependency:tree(从项目文件夹中运行它):

    mvn dependency:tree -Dverbose -Dincludes=junit
    

    会输出项目的所有junit依赖。

    你也可以不包含在内调用它,它会打印每个依赖项。将其重定向到一个文件,然后您将能够使用 Notedpad++ 或其他任何东西在单个页面上查找依赖项(也包括间接的依赖项),具有高信号和低噪声:

    mvn dependency:tree -Dverbose > dep.txt
    

    【讨论】:

    • 不,我不能。正如我所提到的,项目中有许多依赖项。我不认识所有这些。
    • 你不需要@Arik。把答案读到最后:)
    • 不,我不能。我有数百个依赖项,它们都有依赖项。您建议的文档将有数百页的高噪音。我建议你尝试一下 - 因为我过去做过。
    • 数百个的依赖项?路上肯定出了什么大问题。祝你好运:|
    猜你喜欢
    • 2012-04-05
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    相关资源
    最近更新 更多