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

时间:2018-05-03 15:44:00

标签: java maven pom.xml

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

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

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

你可以使用Maven的timestamp('timestamp1')->default(DB::raw('2018-01-01 15:23'))(从项目的文件夹中运行它):

dependency:tree

它将输出项目的所有mvn dependency:tree -Dverbose -Dincludes=junit 依赖项。

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

junit