2009-06-20 5 views
12

私のGroovyコードがJavaファイルを参照する状況がありますが、同じGroovyコードを参照するJavaファイルもあります。 Mavenでコンパイルしようとすると、Javaの前後でGroovyをコンパイルする必要があります。GroovyコードがいくつかのJavaファイルに依存し、異なるJavaファイルがGroovyコードに依存するため、実際には機能しません。このような依存関係を処理する方法はありますか?maven compile groovy

答えて

8

gmavenプラグインをmaven pom.xmlに追加することで、コードをコンパイルできるはずです。あなたが扱っている言語間参照のタイプに対処するためのGroovyコードのJavaスタブを生成します。私はかなりそれを使用し、それは非常にうまく動作します。

0

コードをレイヤーに分割し、下位レイヤーで上位レイヤーを呼び出すことはできますが、その逆はできません。たとえば、Webアプリケーションでは、ビューレイヤ、サービスレイヤ、および永続レイヤを持つことができます。ビューレイヤーはサービスレイヤーを呼び出し、サービスレイヤーはパーシスタンスレイヤーを呼び出しますが、パーシスタンスレイヤーはサービスレイヤーまたはビューレイヤーを決して呼び出しません。 Groovy/Javaコードが同じレイヤーに存在するようにしたい場合は、他のレイヤーを呼び出すようにしますが、両方がお互いを呼び出すことはありません。要点は、双方向の依存関係を避けるべきだということです。

+0

-1ジョイントGroovy-Javaコンパイラがあります。 –

+0

これは本当ですが、双方向の依存関係があると、不必要に複雑でメンテナンスの難しいコードにつながる可能性があります。この質問の文脈では、私はGMavenの使用が正解であることに同意しますが、私はまだコードをリファクタリングして、少なくとも双方向関係をなくすか、少なくとも減らします。 – rich

11

はい、そのままGMavenを使用してください。これは共同コンパイラなので、自動的にJavaをグルーヴィーに変換し、Java依存関係に変換します。

簡単に言えば、あなたがする必要があります。

  • をごpom.xmlgmaven-pluginを含めます。
  • groovyクラスをsrc/main/groovyまたはsrc/test/groovyにしてください。
  • gmavenプラグインを関連するライフサイクルフェーズにバインドします。

詳細はbuilding groovy projectsを参照してください。

関連する問題