一部の Groovy コードが Java ファイルを参照している状況がありますが、同じ Groovy コードを参照する別の Java ファイルもあります。Mavenでコンパイルしようとすると、Javaの前または後にGroovyをコンパイルする必要があります.GroovyコードはいくつかのJavaファイルに依存し、別のJavaファイルはGroovyコードに依存するため、実際には機能しません. この種の依存関係を処理する方法はありますか?
3 に答える
はい、GMavenを使用してください。これは共同コンパイラであるため、Java から groovy へ、および groovy から Java への依存関係を自動的に管理します。
簡単に言えば、次のことを行う必要があります。
- に を含め
gmaven-plugin
ますpom.xml
。 - グルーヴィーなクラスを
src/main/groovy
orの下に置いてくださいsrc/test/groovy
。 - gmaven プラグインを関連するライフサイクル フェーズにバインドします。
詳細については、groovy プロジェクトのビルドを参照してください。
gmavenプラグインを maven pom.xml に追加することで、コードをコンパイルできるはずです。グルーヴィーなコードの Java スタブを生成して、扱っている言語間参照のタイプを処理します。私はかなりそれを使用し、それは非常にうまく機能します。
コードをレイヤーに分割し、下位レイヤーが上位レイヤーを呼び出すようにすることはできますが、その逆はできません。たとえば、Web アプリでは、ビュー レイヤー、サービス レイヤー、および永続化レイヤーを使用できます。ビュー レイヤーはサービス レイヤーを呼び出し、サービス レイヤーは永続レイヤーを呼び出しますが、永続レイヤーがサービス レイヤーまたはビュー レイヤーを呼び出すことはありません。Groovy/Java コードを同じレイヤーに存在させたい場合は、一方が他方を呼び出していることを確認してください。ただし、両方が互いに呼び出しているわけではありません。肝心なのは、双方向の依存関係を避けるべきだということです。