2011-02-11 15 views
0

He、Eclipse内でMaven2とGroovyのコンパイルエラーが発生しましたが、

Java/Groovy Eclipseプロジェクトが混在しています。

groovyプラグインを使用しているEclipseの内部は、すべてがうまくコンパイルされます。さらに、私はMaven2を利用するプロジェクトを立ち上げました。それでも、すべてがコンパイルされて実行されます(テスト)。

しかし、Eclipse以外のプロジェクトをコンパイルすると、つまりMaven2スタンドアロンを使用するとコンパイルエラーが発生します。プロジェクトはいくつかのサブプロジェクト(親/モジュール)に分かれています。 Maven2を構成は、モジュールのいくつかは、コンパイルOK原因のようですが、実際には1つは次のように、私のコンパイラエラーを与える:

[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 

がなぜこのコードは、スタンドアロンMaven2をを使って日食以内にコンパイルしていないが?予め

おかげで、 /NM

答えて

1

問題は、スタブ生成の問題です。 GMavenは、残りのJavaファイルに対してGroovyファイルをコンパイルするためのJavaスタブを作成します。アプリケーションがGroovyに完全に入っている場合、またはJavaクラスからGroovyクラスへの参照がない場合は、<goal>generateStubs</goal>の目標を削除できます。

Groovy-Eclipseコンパイラはスタブを必要としないため、この問題はEclipse内では認識されません。

GroovyとJavaの間で相互参照が必要な場合は、mavenにgroovy-eclipse-compilerプラグインを使用することをお勧めします。詳しい情報はこちら:これにより

http://contraptionsforprogramming.blogspot.com/2010/09/where-are-all-my-stubs.html

、あなたのコンパイルEclipseの内側と外側がまったく同じに動作することを確認してくださいます。

+0

ありがとうございます!このヒントは魅力のように機能します。 –

1

グルービーEclipseプラグインは、グルービーのバージョンを使用エクリプス(グルービー-1.7.5)のプラグインフォルダ内に提示します。 おそらく、あなたのmavenファイルで参照されているGroovyのバージョンが異なっている可能性があります。 gmaven-runtimeで考えたことを指定できます:

 <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> 
関連する問題