1

我正在尝试解决此处描述的问题: 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 的依赖替换为不依赖于 ASM 4.0 的依赖 groovy-all(类包似乎在这里,但已使用 jarjar 重命名)。

是否可以在父 pom 的依赖管理中告诉 maven,每当一个子依赖于 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>
4

1 回答 1

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>
于 2013-05-29T15:27:22.913 回答