maven-enforcer-plugin抱怨我在pom.xml文件中找不到的依赖项

时间:2014-04-28 11:08:41

标签: maven maven-enforcer-plugin

我遇到了maven-enforcer-plugin的问题。它抱怨以下(简化)输出:

[WARNING] Rule 0: org.apache.maven.plugins.enforcer.DependencyConvergence failed with message:
Failed while enforcing releasability the error(s) are [
Dependency convergence error for com.company.project:interfaces:1.0.4 paths to dependency are:
+-com.company.project:product:1.0.14-SNAPSHOT
  +-com.company.project:some_part_A:1.0.0
    +-com.company.project:interfaces:1.0.4
and
+-com.company.project:product:1.0.14-SNAPSHOT
  +-com.company.project:some_part_B:1.0.0
    +-com.company.project:some_sub_part_BB:1.1.0
      +-com.company.project:interfaces:1.0.4
and
+-com.company.project:product:1.0.14-SNAPSHOT
  +-com.company.project:interfaces:1.0.6

问题在于some_sub_part_BB:1.1.0。根据插件,这部分依赖于1.0.4版的接口。但这是不可能的:some_sub_part_BB版本1.0.0使用接口版本1.0.3,some_sub_part_BB版本1.1.0直接使用接口版本1.0.6。我没有some_sub_part_BB使用版本1.0.4的任何工件。

我想我正在查看该插件的一些错误,但我想调试此问题以确保出现问题。这是任何人以前遇到的问题,还是有人可以提供有关如何调试此问题的任何指示? (我对Maven相当新,除了检查所有pom.xml文件外,我不知道在哪里进一步查看。)


附注:想法是在项目级别POM上指定要使用的接口版本,以便所有(子)部分都同意使用哪个接口。但是,正如您所看到的,不同的部分还指定了它们使用的界面,我不认为这是正确的方法。我还没弄明白如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

原来这不是一个错误:在pom.xml文件中,您可以在dependencyManagement部分中推翻工件的版本。就我而言,有人强制执行1.0.4版的接口。 enforcer插件没有显示这个;在使用详细标志生成依赖关系树之后,它才变得明显,即mvn dependency:tree -Dverbose