eclipse插件和maven依赖中存在的'groovy-all'jar之间的兼容性问题

时间:2015-03-18 07:13:59

标签: java eclipse maven groovy

在我的POM中,有一个依赖:spock-core 1.0-groovy-2.3,它将groovy-all 2.3.10添加到我的项目中。而且,我的eclipse groovy插件包含groovy-all 2.3.7 jar。因此,每当我尝试运行我的groovy spec文件时,都会抛出以下错误:

  

groovy.lang.GroovyRuntimeException:冲突的模块版本。模块[groovy-all在版本2.3.7中加载,您正在尝试加载版本2.3.10

所以,为了匹配我给我留下的两个选项:

  • 降级spock-core依赖的版本
  • 将eclipse插件groovy-all jar升级到2.3.10

第一个选项是不可能的,因为没有这样的spock-core依赖可以为我提供groovy-all 2.3.7 jar。所以,请指导我如何将我的groovy eclipse插件从2.3.7升级到2.3.10。

P.S。我为我的项目设置了groovy编译器级别为2.3。而且,我在Luna,Kepler,Juno eclipse面临同样的问题。

2 个答案:

答案 0 :(得分:5)

你可以“降级”Spock的依赖关系。只需在您的Spock依赖项中添加“groovy-all”的排除。然后显式添加对groovy-all 2.3.7的依赖

排除可以添加为follows

<dependency>
    ...
    <exclusions>
        <exclusion>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
        </exclusion>
    </exclusions>
    ...
</dependency>

答案 1 :(得分:0)

通过添加以下Maven存储库来更新POM文件:

<!-- Below 3 GROOVY dependencies are MUST to waive the version conflict in runtime
         https://mvnrepository.com/artifact/org.codehaus.groovy/groovy-all -->
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>2.4.16</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.codehaus.groovy/groovy-xml -->
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-xml</artifactId>
            <version>2.4.16</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.codehaus.groovy/groovy -->
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy</artifactId>
            <version>2.4.16</version>
        </dependency>