Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 2 Maven2&;Groovy编译错误,但不在Eclipse中_Maven 2_Groovy - Fatal编程技术网

Maven 2 Maven2&;Groovy编译错误,但不在Eclipse中

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

他,

我有一个混合的Java/Groovy eclipse项目

在eclipse内部,利用groovy插件,一切都可以正常编译。此外,我还建立了利用Maven2的项目。在eclipse中,一切编译和运行(测试)都很好

但是,在eclipse之外编译项目(即使用Maven2 standalone)会给我带来编译器错误!该项目分为几个子项目(父/模块)。Maven2配置似乎正常,因为一些模块已编译,但实际上有一个模块给了我一个编译器错误,如:

[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

提前感谢,,
/nm

Groovy 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内部和外部的编译工作完全相同