如何从pom中删除重复的依赖项?

时间:2017-01-23 12:09:21

标签: java maven dependencies dependency-management multi-module

我在maven中有一个多模块项目,其中一些模块依赖于其他模块。现在,充当依赖关系的模块具有一些已经在依赖模块中列出的依赖关系。

是否有快速识别此类重复依赖项的方法并将其从依赖模块的pom中删除?

4 个答案:

答案 0 :(得分:5)

可以扩展项目的依赖关系树以显示依赖关系冲突。 使用命令

mvn dependency:tree

识别此类重复的依赖项。

使用pom的<exclusions>部分下的<dependency>标记排除此类重复的依赖项。

<dependencies>
    <dependency>
      <groupId>sample.ProjectA</groupId>
      <artifactId>Project-A</artifactId>
      <version>1.0</version>
      <scope>compile</scope>
      <exclusions>
        <exclusion>  <!-- declare the exclusion here -->
          <groupId>sample.ProjectB</groupId>
          <artifactId>Project-B</artifactId>
        </exclusion>
      </exclusions> 
    </dependency>
  </dependencies>

答案 1 :(得分:2)

如果您使用eclipse作为IDE,则可以在相关pom.xml的依赖关系层次结构中看到重复项。并且使用排除标记可以省略它们。

答案 2 :(得分:2)

您可以使用mvn depgraph:graph -Dincludes=ets.tkt -DshowDuplicates -Dscope:compile. 要使用此插件,请将其放在您的settings.xml中

<settings>
  . . .
  <pluginGroups>
    <pluginGroup>com.github.ferstl</pluginGroup>
  </pluginGroups>

</settings>

运行上一个控制台命令时,可以转到/ target,您将找到一个.dot文件。您可以使用graphviz渲染此文件。 有关更多信息,请访问https://github.com/ferstl/depgraph-maven-plugin

答案 3 :(得分:0)

有一个JBoss工具可以帮助解决这些问题:http://tattletale.jboss.org/ 不幸的是,这些天似乎没有得到积极的发展。