Help us understand the problem. What is going on with this article?

Gradleでマルチプロジェクト

More than 5 years have passed since last update.

Gradleは単一プロジェクトだけではなく複数のプロジェクトをまとめて扱うことができて、マルチプロジェクトと呼んでいます。
マルチプロジェクトではいくつかのレイアウトがあるので、以下の3つのプロジェクトを例に書いてみます。

  • root プロジェクトをまとめるためのプロジェクト
  • share 共通機能をまとめたプロジェクト
  • application アプリケーションがあるプロジェクトでshareプロジェクトに依存しています。

build.gradleの書き方はGradle User Guide/7.3. マルチプロジェクトのJavaビルドなどが詳しいため、ここでは割愛します。

階層構造のレイアウト

root配下にshareapplicationを配置する見た目で分かりやすいレイアウトです。
Gradleのビルドファイルであるbuild.gradlesettings.gradleroot直下に配置します。

Hierarchical-Layout
root/
  share/
  application/
  build.gradle
  settings.gradle

settings.gradleにはincludeに続けてプロジェクト名を書きます。

settings.gradle
include 'share', 'application'

フラットなレイアウト

Eclipseなどで扱いやすいように全てのプロジェクトを同じ階層に配置するレイアウトです。
build.gradlesettings.gradleはそのままで、shareapplicationrootと同じ階層にあります。
ただし、このレイアウトではroot以外でビルドできません。

Flat-Layout
root/
  build.gradle
  settings.gradle
share/
application/

settings.gradleincludeincludeFlatに変更するだけです。

settings.gradle
includeFlat 'share', 'application'

masterを使ったフラットなレイアウト

※追記

フラットなレイアウトの特別パターンで、rootディレクトリの名前をmasterにすれば他のプロジェクトからビルドできます。
この場合は同じ階層のmasterディレクトリの中にsettings.gradleがあればマルチプロジェクトとして扱われるようです。

参考: Gradle User Guide/第53章 ビルドのライフサイクル/53.4. 初期化

Flat-Layout(master)
master/
  build.gradle
  settings.gradle
share/
application/

もう1つのフラットなレイアウト

フラットなレイアウトでも各プロジェクトでビルドできるように配置したものです。
最初のフラットなレイアウトから更にsettings.gradleを各プロジェクトと同じ階層に配置します。

Another-Flat-Layout
root/
  build.gradle
share/
application/
settings.gradle

settings.gradleでルートプロジェクトの名前とディレクトリを設定します。
Gradleはカレントディレクトリにsettings.gradleが無い場合は上位のディレクトリを順に探してくれるので、どのプロジェクトからでもビルドできるようになります。

settings.gradle
rootProject.name = 'root'
rootProject.projectDir = new File(settingsDir, 'root')

includeFlat 'share', 'application'
kadinche
弊社では 2008年の会社設立当初から、一貫して VR ソリューションの研究開発に取り組んでいます。
https://www.kadinche.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away