未知的依赖关系将在Maven Build中出现

时间:2009-08-13 17:42:54

标签: maven-2

我一直在尝试使用Maven来构建项目。该项目在我试过的几台计算机上运行良好,但在一台机器上,我有一个随机的问题。

基本上,maven正在搜索未包含在pom.xml文件或settings.xml文件中的依赖项。

我尝试了mvn依赖:purge-local-repository但仍无济于事;我仍然坚持mvn寻找依赖,我不知道它在哪里。

2 个答案:

答案 0 :(得分:12)

如果您在项目上运行 mvn dependency:tree ,您将看到引入不需要的依赖项的位置,然后您可以排除依赖项。

这是输出的一个例子:

[INFO] [dependency:tree]
[INFO] org.apache.maven.plugins:maven-dependency-plugin:maven-plugin:2.0-alpha-5-SNAPSHOT
[INFO] \- org.apache.maven.doxia:doxia-site-renderer:jar:1.0-alpha-8:compile
[INFO]    \- org.codehaus.plexus:plexus-velocity:jar:1.1.3:compile
[INFO]       \- velocity:velocity:jar:1.4:compile

要排除依赖关系,您可以执行以下操作:

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

有关依赖插件的更多详细信息,请参阅documentation

有关排除的详细信息,请参阅guide

更新:您还可以使用m2eclipse插件生成依赖项的图形树或图形。 dependency tree screenshot http://www.sonatype.com/books/m2eclipse-book/reference/figs/web/eclipse_pom-editor-depend-tree-locate.png dependency graph screenshot http://www.sonatype.com/books/m2eclipse-book/reference/figs/web/eclipse_pom-editor-graph.png

答案 1 :(得分:0)

Maven依赖项可以具有传递依赖项(依赖项的依赖项),因此即使未在POM中显式声明某些内容,Maven仍可能需要查找它。

运行 mvn依赖关系:树应该可以帮助您诊断问题,正如Rich Seller所描述的那样;它也可以帮助您在没有问题的其他机器上运行它并比较输出。

purge-local-repository 在这方面并没有真正帮助你;所有这一切都是从本地仓库中删除工件,以防其中一个损坏。如果maven试图获得一个不在本地仓库中的依赖,那么它就不会有太大帮助。