マルチプロジェクトビルドのサンプル
Gradle マルチプロジェクトビルドのサンプルの備忘。
下記のようなプロジェクト構造の時、Appプロジェクトをビルドする。
AppプロジェクトはStabプロジェクトにプロジェクト依存している。
├── App └── build ├── build.gradle ├── dep_project │ └── Stab └── settings.gradle
マルチプロジェクトの設定
BuildScript/settings.gradle にビルド対象のプロジェクトを記述する。
settings.gradle
includeFlat 'App' include 'dep_project/Stab'
includeFlat はsettings.gradleが存在するディレクトリと同階層のプロジェクトを指定する。
includeはsettings.gradleが存在するディレクトリ配下のプロジェクトを指定する。
ビルドの設定
BuildScript/build.gradle にビルドの設定を記述する。
build.gradle
subprojects { apply plugin: 'java' repositories { mavenCentral() } dependencies { compile 'org.slf4j:slf4j-api:1.7.5' testCompile 'junit:junit:4.11' } } project(':App') { dependencies { compile project(':dep_project/Stab') } }
subprojects に囲まれた部分の設定は、settings.gradleで指定された全てのプロジェクトに適用される。
プロジェクト固有の設定は project(':${プロジェクト名}') に記述する。
(この時、subprojectsの依存関係にStabプロジェクトを記述してしまい、ビルド実行時に「StabプロジェクトをビルドするためにStabプロジェクトをビルドしなければならない」という循環参照エラーで怒られるという失態を犯しました…)
プロジェクト依存の設定は下記の用に設定する。
dependencies { compile project(':dep_project/Stab') }
ビルドの実行
build.gradleを普通に実行すると、settings.gradleに記述されたプロジェクト全てのビルドが実行されます。
(ビルドの順番ってどう決まるんだろ?)
gradle -b BuildScript/build.gradle build
ルートディレクトリから実行する場合、-b オプションでgradleスクリプトファイルを指定します。
特定のプロジェクトに対するビルドを実行したい場合は下記のようにします。
gradle -b BuldScript/build.gradle :App:build :dep_project/Stab:compileJava UP-TO-DATE :dep_project/Stab:processResources UP-TO-DATE :dep_project/Stab:classes UP-TO-DATE :dep_project/Stab:jar UP-TO-DATE :App:compileJava UP-TO-DATE :App:processResources UP-TO-DATE :App:classes UP-TO-DATE :App:jar UP-TO-DATE :App:assemble UP-TO-DATE :App:compileTestJava UP-TO-DATE :App:processTestResources UP-TO-DATE :App:testClasses UP-TO-DATE :App:test UP-TO-DATE :App:check UP-TO-DATE :App:build UP-TO-DATE BUILD SUCCESSFUL Total time: 6.736 secs
依存しているStabプロジェクトに対するjarタスクも一緒に実行されています。
とりあえず今日はここまで。
GradleでSVNリポジトリから依存プロジェクトをチェックアウトしてからビルド実行が出来るようにすることが目標。
Gradle svn-ant Sample
Gradleはとても便利で高機能なのに日本語の書籍がないのがもったいないですね。
Gradle in Actionの邦訳とか出ないかな。
- 作者: Benjamin Muschko,Hans Dockter
- 出版社/メーカー: Manning Pubns Co
- 発売日: 2014/03/09
- メディア: ペーパーバック
- この商品を含むブログを見る