2016-09-30 34 views
4

私には、scala、groovy、Javaの3つのテストフォルダがあります。testCompilerタスク間の循環依存性

Javaでは、GroovyとGroovyに依存するクラスがありますが、Scalaに依存するクラスがあります。

だから、私はGradleのビルドファイルで、この依存関係を追加:

compileTestGroovy.dependsOn compileTestScala 
compileTestJava.dependsOn compileTestGroovy 

しかし - 私はGradleの

Circular dependency between the following tasks: 
:compileTestGroovy 
+--- :compileTestJava 
| \--- :compileTestGroovy (*) 
\--- :compileTestScala 
    \--- :compileTestJava (*) 

(*) - details omitted (listed previously) 

に - 私が間違ってやって何任意のアイデアを、このエラーを受信しますか?

よろしく

+0

なぜcompileTestタスクの依存関係を追加する必要がありますか?これらの行を両方ともコメントしてビルドするとどうなりますか? 3つのテストフォルダがすべて同じプロジェクトの一部である場合、クラスの依存関係は自動的に解決されます。 – RaGe

+0

順序を指定しないと、Javaが最初に、次にGroovyが、最後はScalaになります。したがって、これらの依存関係を持つクラスはコンパイルされず、タスクは失敗します – paul

答えて

1

あなたは、本質的に、あなたが一緒にソースを配置する必要があることを意味joint compilationを使用する必要があります。ドキュメントから:

(私たちは必ずしも 後者のためにそれを使用することをお勧めしませんが)[...] Groovyのコード、混合GroovyとJavaのコード、さらには 純粋なJavaコードを扱うことができます。このプラグインはジョイントコンパイルをサポートしています。 はGroovyとJavaコードを自由に混在させ、両方向の依存関係を にできます。例えば、Groovyクラスは、Groovyクラスを継承するJavaクラス を拡張することができます。これにより、ジョブに最適な言語である を使用し、必要に応じて他の言語の 言語のクラスを書き換えることができます。