Maven 2 Maven2&;Groovy编译错误,但不在Eclipse中
他, 我有一个混合的Java/Groovy eclipse项目 在eclipse内部,利用groovy插件,一切都可以正常编译。此外,我还建立了利用Maven2的项目。在eclipse中,一切编译和运行(测试)都很好 但是,在eclipse之外编译项目(即使用Maven2 standalone)会给我带来编译器错误!该项目分为几个子项目(父/模块)。Maven2配置似乎正常,因为一些模块已编译,但实际上有一个模块给了我一个编译器错误,如:Maven 2 Maven2&;Groovy编译错误,但不在Eclipse中,maven-2,groovy,Maven 2,Groovy,他, 我有一个混合的Java/Groovy eclipse项目 在eclipse内部,利用groovy插件,一切都可以正常编译。此外,我还建立了利用Maven2的项目。在eclipse中,一切编译和运行(测试)都很好 但是,在eclipse之外编译项目(即使用Maven2 standalone)会给我带来编译器错误!该项目分为几个子项目(父/模块)。Maven2配置似乎正常,因为一些模块已编译,但实际上有一个模块给了我一个编译器错误,如: [ERROR] \Projects\X\rules\sr
[ERROR] \Projects\X\rules\src\main\groovy\x\Normalizer.java:[18,25] normalize(java.util.List<java.util.Map<java.lang.String,java.lang.Object>>) in x.
x.util.RuleUtil cannot be applied to (java.util.List<java.util.Map<java.lang.String,?>>)
[ERROR] \Projects\X\rules\src\main\groovy\x\Statistics.java:[70,67] inconvertible types
found : capture#683 of ?
required: java.lang.String
[ERROR]\Projects\X\rules\src\main\groovy\X\Normalizer.java:[18,25]在X中规范化(java.util.List)。
x、 无法将util.RuleUtil应用于(java.util.List)
[错误]\Projects\X\rules\src\main\groovy\X\Statistics.java:[70,67]不可转换类型
发现:捕获#683个?
必需:java.lang.String
为什么这段代码是在eclipse中编译的,而不是使用独立的Maven2
提前感谢,,
/nmGroovy Eclipse插件使用Eclipse插件文件夹(Groovy-1.7.5)中的Groovy presents版本。 最有可能的是,maven文件中引用的Groovy版本不同。您可以在gmaven运行时中指定它:
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.3</version>
<configuration>
<providerSelection>1.7</providerSelection>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.gmaven.runtime</groupId>
<artifactId>gmaven-runtime-1.7</artifactId>
<version>1.3</version>
<exclusions>
<exclusion>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>1.7.5</version>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>generateStubs</goal>
<goal>compile</goal>
<!-- <goal>generateTestStubs</goal> -->
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
org.codehaus.gmaven
gmaven插件
1.3
1.7
org.codehaus.gmaven.runtime
gmaven-runtime-1.7
1.3
org.codehaus.groovy
groovy all
org.codehaus.groovy
groovy all
1.7.5
发电集团
编译
测试编译
您面临的问题是存根生成问题。GMaven为Groovy文件创建Java存根,以便根据剩余的Java文件进行编译。如果应用程序完全在Groovy中,或者没有从Java类到Groovy类的引用,则可以删除generateStubs
目标
Groovy Eclipse编译器不需要存根,因此您不会在Eclipse中看到这个问题
如果确实需要在Groovy和Java之间进行交叉引用,我建议使用Groovy eclipse编译器插件for maven。详情如下:
这样,您将确保Eclipse内部和外部的编译工作完全相同