Java GMaven构建失败,出现“错误”;遇到了API不兼容问题;

Java GMaven构建失败,出现“错误”;遇到了API不兼容问题;,java,maven,groovy,gmaven,Java,Maven,Groovy,Gmaven,尝试使用MavenGmaven插件编译我的项目时,出现以下错误: [ERROR]无法执行目标org.codehaus.gmaven:gmaven插件:1.4:compile(默认)在ProjectConcorde web上:目标org.codehaus.gmaven:gmaven插件的执行默认值:1.4:compile失败:执行org.codehaus.gmaven:gmaven插件时遇到API不兼容:1.4:compile:java.lang.NoSuchMethodError:org.cod

尝试使用Maven
Gmaven
插件编译我的项目时,出现以下错误:

[ERROR]无法执行目标org.codehaus.gmaven:gmaven插件:1.4:compile(默认)在ProjectConcorde web上:目标org.codehaus.gmaven:gmaven插件的执行默认值:1.4:compile失败:执行org.codehaus.gmaven:gmaven插件时遇到API不兼容:1.4:compile:java.lang.NoSuchMethodError:org.codehaus.groovy.ast.ModuleNode.getStarImports()Ljava/util/List

谷歌认为这是因为我的依赖链中有多个groovy版本。但是,在检查完完整的依赖关系树之后,我发现在完整的树中只有一个依赖关系

以下是我的pom.xml的摘录:

    <!-- Groovy dependencies -->
    <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-all</artifactId>
        <version>1.8.5</version>
    </dependency>
    <!-- ... snip ... -->

        <plugin>
            <groupId>org.codehaus.gmaven</groupId>
            <artifactId>gmaven-plugin</artifactId>
            <version>1.4</version>
            <executions>
                <execution>
                    <goals>
                        <goal>generateStubs</goal>
                        <goal>compile</goal>
                        <goal>generateTestStubs</goal>
                        <goal>testCompile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

org.codehaus.groovy
groovy all
1.8.5
org.codehaus.gmaven
gmaven插件
1.4
发电集团
编译
生成测试存根
测试编译

这是由于GMaven插件定义中缺少
providerSelection
元素造成的

正确的GMaven定义如下所示:

        <plugin>
            <groupId>org.codehaus.gmaven</groupId>
            <artifactId>gmaven-plugin</artifactId>
            <version>1.4</version>
            <configuration>
                <providerSelection>1.8</providerSelection>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>generateStubs</goal>
                        <goal>compile</goal>
                        <goal>generateTestStubs</goal>
                        <goal>testCompile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

org.codehaus.gmaven
gmaven插件
1.4
1.8
发电集团
编译
生成测试存根
测试编译

对Marty的解决方案做了一点小小的修改,我就可以让它工作了:

<plugin>
        <groupId>org.codehaus.gmaven</groupId>
        <artifactId>gmaven-plugin</artifactId>
        <version>1.5</version>

        <executions>
            <execution>
                <configuration>
                    <providerSelection>2.0</providerSelection>
                </configuration>
                <goals>
                    <goal>generateStubs</goal>
                    <goal>compile</goal>
                    <goal>generateTestStubs</goal>
                    <goal>testCompile</goal>
                </goals>
            </execution>
        </executions>
</plugin>

org.codehaus.gmaven
gmaven插件
1.5
2
发电集团
编译
生成测试存根
测试编译

我在项目中遇到了相同的错误,但经过长时间的诊断后,发现与以下依赖项关联的jar已损坏

<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
    <version>1.8.5</version>
</dependency>

org.codehaus.groovy
groovy all
1.8.5

几乎不用说,但是“providerSelection”值是您想要执行代码的Groovy版本。