こんどは(2)でビルドしたプロジェクトに依存しているプロジェクトをビルドする。ちなみに今回ビルドしようとしているのは、Commonプロジェクト。前回ビルドしたのはCommonDAOプロジェクトである。
もちろん、順番にビルドすることにして、依存先のbuildディレクトリ以下のjarファイルにdependenciesを記述してもできると思うが、それではmake以下である。
プロジェクトに依存する場合には、このように書くらしい。
apply plugin: 'java' sourceSets { main { java { srcDir 'src' } } } dependencies { compile project(':CommonDAO') }
もちろんうまくいかない。
> gradle assemble FAILURE: Build failed with an exception. * Where: Build file '/Users/tambara/hoge/architect/Common/build.gradle' line: 12 * What went wrong: A problem occurred evaluating root project 'Common'. > Project with path ':CommonDAO' could not be found in root project 'Common'.
CommonDAOなんて見つからないよと言っている。Gradleはパスの上下関係でプロジェクトの上下関係を認識するようなので、CommonとCommonDAOが横に並んでいるからダメなのだ。
プロジェクト構成は、settings.gradleというファイルで指定する。プロジェクト構成を知るために、Gradleはパスを遡ってsettings.gradleを探す。なので、今回の場合は、CommonとCommonDAOと同じレベルに置いてやれば良い
- architect/
- settings.gradle
- Common/
- CommonDAO/
こんな感じ。中身は
include 'Common' include 'CommonDAO'
だけが書いてある。これで、Commonの下でgradle assembleすると、まずCommonDAOのビルドがスタートする。ばっちりである。