排除标记无法解决重复的依赖项版本

时间:2014-07-18 08:09:40

标签: maven

这是我的问题,我有parent pom.xml定义了:

--------parent pom.xml-----------------
<dependencyManagement>
<dependency>
    <groupId>org.robolectric</groupId>
    <artifactId>robolectric</artifactId>
    <version>2.3</version>
    <scope>test</scope>
</dependency>

    <dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-artifact</artifactId>
    <version>3.0.3</version>
</dependency>
</dependencyManagement>

roboletric pom.xml内,我们有:

<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-ant-tasks</artifactId>
    <version>2.1.3</version>
</dependency>

maven-ant-tasks pom.xml内,它有:

<dependency>
   <groupId>org.apache.maven</groupId>
   <artifactId>maven-artifact</artifactId>
   <version>2.2.1</version>
</dependency>

因此,每当我调用仅存在于roboletric测试用例中的maven-artifact 3.0.3中的API时,它将抛出nosuchmethod异常。

所以我尝试过:

1. <dependency>
       <groupId>org.robolectric</groupId>
       <artifactId>robolectric</artifactId>
       <version>2.3</version>
       <scope>test</scope>
           <exclusions>
               <exclusion>
                  <groupId>org.apache.maven</groupId>
                 <artifactId>maven-artifact</artifactId>
               </exclusion>
           </exclusions>
  </dependency>
  1. 我也尝试过移动:

        org.apache.maven     Maven的神器     3.0.3

  2. <dependencyManagement>之下的儿童pom,我认为它应该覆盖父母,但实际上它并没有。

    我认为这种问题应该很常见,但我无法弄清楚,有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您应该在父POM中定义依赖关系管理,以确定所有(传递)依赖关系中maven-artifact的版本:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-artifact</artifactId>
      <version>3.0.3</version>
    </dependency>
  </dependencies>
</dependencyManagement>