gradleでマルチプロジェクト

2013-10-17

今回のテーマは「gradleでマルチプロジェクトをビルド」です。

そもそも、マルチプロジェクトとは何か?、ですが、複数のプロジェクトを含むツリー構造のプロジェクトを指します。

例えば、

rootプロジェクト
|— サブプロジェクトA
|— サブプロジェクトa1
|— サブプロジェクトB
|— ライブラリ

とか

|— rootプロジェクト
|— サブプロジェクトA
|— サブプロジェクトB
|— ライブラリ`

みたいな構造のプロジェクトです。

マルチプロジェクトはプロジェクトの配置とsettings.gradleの設定次第で、
いちどに複数のプロジェクトをビルドしたり、サブプロジェクトのみをビルドしたりすることができます。

マルチプロジェクトにどのプロジェクトを含むかという情報は、
ルートプロジェクト直下のsettings.gradleに記述します。


1. サブプロジェクトAとサブプロジェクトBを含む設定の例。

rootプロジェクト
|— settings.gradle
|— サブプロジェクトA
|— サブプロジェクトB

include 'サブプロジェクトA', 'サブプロジェクトB'

もしくは

include 'サブプロジェクトA'
include 'サブプロジェクトB'

これでサブプロジェクトAとサブプロジェクトBがrootプロジェクトのサブプロジェクトとして認識されます。


2. サブプロジェクトAと、サブプロジェクトAのサブプロジェクトa1を含む設定の例。

rootプロジェクト
|— settings.gradle
|— サブプロジェクトA
|— サブプロジェクトa1

include 'サブプロジェクトA:サブプロジェクトa1'

「:」はパスの区切り文字を表します。(ディレクトリパスの¥と同じですね)
これだと、まるでサブプロジェクトa1しか含まないように見えるかもしれませんが、
末端のプロジェクトをincludeすると、rootから末端の間のプロジェクトが全てincludeされるのです。

もちろん、

include 'サブプロジェクトA'
include 'サブプロジェクトA:サブプロジェクトa1'

のように書いてもOKです。


サブプロジェクトA単体でビルドするときに、サブプロジェクトa1のビルドも行うためには、サブプロジェクトAの下にもsettings.gradleをおいてあげる必要があります。

rootプロジェクト
|— settings.gradle
|— サブプロジェクトA
|— settings.gradle
|— サブプロジェクトa1