Gradle でサブディレクトリを含むマルチプロジェクトを構成する


概要

サブディレクトリによる階層構造がある場合で、Gradleのマルチプロジェクトを構築する方法になります。
下記、記事を参考にさせていただきました。
https://qiita.com/shiena/items/371fe817c8fb6be2bb1e

環境

  • Java 8
  • Gradle 5.6
  • IntelliJ IDEA Ultimate 2019.2
  • Windows10

コードサンプル

サンプルコードを Github にアップしています。
https://github.com/tYoshiyuki/java-gradle-multiproject

構成例

以下のような構成を想定しています。

プロジェクト名 説明
master ルートプロジェクト
common/main-lib 共通ライブラリ その1
common/sub-lib 共通ライブラリ その2
app/api 個別のアプリケーションサンプル
app/web 個別のアプリケーションサンプル
app/batch 個別のアプリケーションサンプル

設定方法

root フォルダにてプロジェクト全体の Gradle 設定を行います。
includeFlat にて同階層にある common, app フォルダを指定します。
その後、include にてサブディレクトリのプロジェクトを指定します。

settings.gradle
rootProject.name = 'root'
includeFlat 'common', 'app'
include 'common:main-lib', 'common:sub-lib'
include 'app:web', 'app:api', 'app:batch'

各アプリケーションのプロジェクトから、共通ライブラリを参照します。

build.gradle
project('app:web') {
    dependencies {
        implementation project(':common:main-lib')
        implementation project(':common:sub-lib')
    }
}

IntelliJ IDEAよりGradleプロジェクトとしてインポートすると、各プロジェクトが認識されていることが確認できます。