2013-12-10 3 views
8

私のプロジェクトでは、JavaコードをいくつかのGroovyコードと混在させています。私はこの時点でGroovyを使ってBeanを構築しています。私のJavaコードの中には、Groovy Beanを直接使用しているものがあります。Javaコンパイラの代わりにGroovyコンパイラを使用するようにIntelliJを設定する

私はこのようにMavenコンパイラプラグインを設定した: -

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.1</version> 
    <configuration> 
     <compilerId>groovy-eclipse-compiler</compilerId> 
     <source>${jdk.version}</source> 
     <target>${jdk.version}</target> 
    </configuration> 
    <dependencies> 
     <dependency> 
      <groupId>org.codehaus.groovy</groupId> 
      <artifactId>groovy-eclipse-compiler</artifactId> 
      <version>2.8.0-01</version> 
     </dependency> 
     <dependency> 
      <groupId>org.codehaus.groovy</groupId> 
      <artifactId>groovy-eclipse-batch</artifactId> 
      <version>2.1.5-03</version> 
     </dependency> 
    </dependencies> 
</plugin> 

私はmvn testを使用して、私のテストケースを実行すると、それだけで正常に動作します。

しかし、テストファイルを右クリックして実行すると、IntelliJからテストケースを直接実行して実行すると、Groovy Beanで「シンボルが見つかりません」というエラーが表示されます。エラーログを読むと、IntelliJはJavaコンパイラを使用してテストを実行する前にプロジェクトをコンパイルします。したがって、テストは失敗します。

Javaコンパイラの代わりに常にGroovyコンパイラを使用するようにIntelliJに指示する方法はわかりません。

Groovyコンパイラを使用するためにSDKで変更する必要があるのは何ですか?私はGroovy関連のJARファイルを追加しようとしましたが、他のエラーがあります。

enter image description here

UPDATE 1:私は "グローバル・ライブラリ" の下でグルーヴィーなJARを追加@Seagull提案

パー: - 私はから直接テストファイルを実行

enter image description here

IntelliJ、Groovyの警告が表示されていて、同じエラーが表示されます。 -

enter image description here

ありがとうございました。

+1

プロジェクト用のGroovyフレームワークのサポートはありますか?プロジェクトビューのプロジェクトルートフォルダを右クリックして追加し、既存のものを選択するか、新しいGroovy SDKを作成してください。また、Groovyライブラリをモジュールの依存関係に追加します。 – Seagull

+0

私はそうすることはできません。新しい「JDK」を追加してダウンロードしたGroovy SDKにポイントすると、何も検出されませんでした。 – limc

+0

Groovyには、そこにリストされる分離されたSDKはありません。通常の「グローバルライブラリ」を作成しようとすると、アイコンがGroovyアイコンに変わります。これをモジュールに追加すると、動作する可能性があります。 – Seagull

答えて

3

これは、この問題については2014年1月2日のIntelliJのサポートチームからの回答である: -

IDEA uses groovyc to generate Java stubs for Groovy classes to allow for seamless interop. Unfortunately stub generation code doesn't launch AST transformations (e.g. Immutable) and so the methods generated by those transformations don't make it into Java stubs, hence Java compiler doesn't see them.

Unfortunately I see no workarounds that don't require modifying your project. One would be to place Groovy files into a separate module. Another would be to change the call places into Groovy. The third one would be to replace @Immutable with @Canonical and generate the constructor so that it's actually in the code (and the stubs will contain it).

You may also vote/watch http://youtrack.jetbrains.com/issue/IDEA-52379 to support Eclipse Groovy compiler.

私は@Immutable@Canonicalの両方を削除してしまったと私自身のコンストラクタを作成し、2つの理由のために: -

  • IntelliJから直接テストケースを実行することができます。
  • 無料で提供されている未使用のコンストラクタによって大きく発生したJaCoCoコードカバレッジレポートを、@Immutable@Canonicalでクリーンアップします。
5

私はのIntelliJ ideaIC-15.0.3-カスタムJDK-bundled.dmg 10.10.5 MAC上、JDK 1.8.0_60 の最新バージョンでこの問題を抱えていました。

後世のためのすべてのステップを含む...端末から

  1. は、私がsdkmanを使用して、groovyの最新バージョンをインストール:sdk install groovy 2.4.5
  2. のIntelliJでは、最上位のプロジェクトを右クリック>を選択し、「フレームワークのサポートを追加...」>groovy 2.4.5を追加します(それならばまだ追加されていない)。 IntelliJで
  3. 、 "環境設定"> "ビルドし、実行、展開"> "コンパイラ"> "リソース・パターン:">!?*.groovy;!?*.java
  4. 再コンパイルするプロジェクトを!?*.java;!?*.groovyから順序を変更(コマンド + Shiftキー + F9)、コンパイルが成功するはずです。
関連する問題