マルチプロジェクトビルドにおいて、別のサブプロジェクトが生成するクラスへの依存があることを示したい場合は、dependencies
ブロックで依存先のプロジェクトを指定します。
例えば、下記のように、2 つのサブプロジェクト (myapp
と mylib
) で構成されているとします。
root/
+-- build.gradle
+-- settings.gradle
+-- myapp/
| +-- src/main/java/Main.java
+-- mylib/
+-- src/main/java/MyLib.java
include 'myapp'
include 'mylib'
プロジェクト myapp
は、プロジェクト mylib
が提供するクラスを参照して実装されています。
public class Main {
public static void main(String... args) {
System.out.println(MyLib.add(100, 200));
}
}
public class MyLib {
public static int add(int a, int b) {
return a + b;
}
}
このように Java のビルドにプロジェクト間の依存関係がある場合は、dependencies
ブロック内の compile
コンフィギュレーションに対して依存先のプロジェクトを指定します。
project(':myapp') {
apply plugin: 'java'
dependencies {
compile project(':mylib')
}
}
project(':mylib') {
apply plugin: 'java'
}
これで、自動的に myapp
プロジェクトから mylib
プロジェクトへのクラスパスが設定され、ビルドが通るようになります。
$ gradle -q build
ちなみに、上記のようにすべてのサブプロジェクト内で同じコンフィギュレーションを行う部分がある場合は、subprojects
メソッドに、共通処理のクロージャとして渡しておくことができます。
ルートプロジェクトを含む共通処理を記述したい場合は、subprojects
の代わりに allprojects
を使用します。
subprojects {
apply plugin: 'java'
}
project(':myapp') {
dependencies {
compile project(':mylib')
}
}
project(':mylib') {
}