我正在尝试解决此处描述的问题: http://www.jayway.com/2013/04/12/solving-asm-conflicts-after-upgrading-to-groovy-2-1/
我有一个使用 ASM 3.2 的依赖项 (Swagger->Jersey) 和一个需要 Groovy 的 RestAssured,而 Groovy 需要 ASM 4.0。
这个想法是将 groovy 的依赖替换为不依赖于 ASM 4.0 的依赖 groovy-all (类包似乎在这里,但已使用 jarjar 重命名)。
是否可以告诉maven,在父pom的依赖管理中,每当子进程依赖RestAssured时,它就会间接加载groovy-all依赖项,而不是正常的groovy依赖项?
谢谢
<小时/>
目标是所有 child 只需要:
<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>
不,这是不可能的。但是,您可以使用依赖项 <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>
我是一名优秀的程序员,十分优秀!