这是我的问题,我有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>
我也尝试过移动:
org.apache.maven Maven的神器 3.0.3
在<dependencyManagement>
之下的儿童pom,我认为它应该覆盖父母,但实际上它并没有。
我认为这种问题应该很常见,但我无法弄清楚,有什么建议吗?
答案 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>