Maven3:替换依赖关系管理中直接依赖的传递依赖

时间:2013-05-29 14:06:53

标签: java maven maven-3

我正在尝试解决此处描述的问题: http://www.jayway.com/2013/04/12/solving-asm-conflicts-after-upgrading-to-groovy-2-1/

我有一个使用ASM 3.2的依赖项(Swagger-> Jersey)和一个需要ASM 4.0的Groovy的RestAssured。

我的想法是将对groovy的依赖替换为依赖groovy-all,它不依赖于ASM 4.0(这里的类包似乎已经使用jarjar重命名)。

是否有可能告诉maven,在父pom的依赖管理中,每当孩子依赖RestAssured时,它会传递加载groovy-all依赖而不是正常的groovy依赖?

由于


目标是所有孩子只需要:

<dependency>
  <groupId>com.jayway.restassured</groupId>
  <artifactId>rest-assured</artifactId>
</dependency>

检索groovy-all而不是groovy

而不是

<dependency>
  <groupId>com.jayway.restassured</groupId>
  <artifactId>rest-assured</artifactId>
</dependency>
<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
</dependency>

1 个答案:

答案 0 :(得分:1)

不,这是不可能的。但是,您可以使用依赖项<exclusions/>。此外,作为顶级依赖项,您可以定义groovy-all

您链接的文章说明了以下解决方案:

<dependency>
    <groupId>com.jayway.restassured</groupId>
    <artifactId>rest-assured</artifactId>
    <version>1.8.0</version>
    <exclusions>
        <!-- Exclude Groovy because of classpath issue -->
        <exclusion>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy</artifactId>
        </exclusion>
    </exclusions>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
    <!-- Needs to be the same version that 
         REST Assured depends on -->
    <version>2.1.2</version>
    <scope>test</scope>
</dependency>