Java Maven-检测项目中同一依赖项的多个版本

Java Maven-检测项目中同一依赖项的多个版本,java,maven,pom.xml,Java,Maven,Pom.xml,我有一个巨大的遗留项目,我想清理。它有许多模块,它们具有相同的依赖项,但版本不同。因为这个项目很大,我自己找不到这个。 是否有一种方法可以检测项目中不同版本的相同依赖关系? e、 g 模块X: <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.0</version> </de

我有一个巨大的遗留项目,我想清理。它有许多模块,它们具有相同的依赖项,但版本不同。因为这个项目很大,我自己找不到这个。 是否有一种方法可以检测项目中不同版本的相同依赖关系? e、 g

模块X:

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

朱尼特
朱尼特
4
模块Y:

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

朱尼特
朱尼特
4.12

您可以使用Maven的
依赖关系:树(从项目文件夹运行):

它将输出项目的所有
junit
依赖项

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

mvn dependency:tree -Dverbose > dep.txt

您可以使用
maven enforcer插件

<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>

org.apache.maven.plugins

不,我不能。正如我提到的,项目中有许多依赖项。我不知道他们所有人。你不需要@Arik。把答案读到最后:)不,我不能。我有数百个依赖项,它们都有依赖项。您建议的文档将有数百页高噪音。我建议你试试看——因为我以前也这么做过。数百页的依赖关系?路上一定出了什么大问题。祝你好运:|我喜欢这个,enforcer插件是否在不同的模块中检测到不同的版本?我认为它只查看每个模块的dependency:树。@JFMeier如果从模块A运行它,它不会检查模块B是否A和B是一个父项下的同级。但若您从父级运行,那个么若父级有A和B作为依赖项,那个么插件应该检查它们。如果我理解你的问题correctly@Ivan谢谢目前我只想处理我自己的依赖关系,而不是一次处理所有的依赖关系。我找不到一个办法。你知道这是否可行吗?i、 e.控制收敛的深度。@Arik看起来不可能限制深度