NowInAndroidのsettings.gradleを読み解く – Android Kotlin Gradle
NowInAndroidのGradleを読み解くシリーズの第1弾です。
NowInAndroidではCompositeビルドを使用して、マルチプロジェクトのビルドを行っています。
今回はbuild-logicにあるsettings.gradle.ktsを見ていきます。
settings.gradle.kts
設定スクリプトは、Settingsオブジェクトを構成します。
このSettingsオブジェクトは、設定スクリプトの「デリゲートオブジェクト」と呼ばれます。
デリゲートオブジェクトとは、そのスクリプトが操作を行う対象のオブジェクトを意味します。
dependencyResolutionManagement { // 1
repositories { // 2
google() // 3
mavenCentral() // 3
}
versionCatalogs { // 4
create("libs") { // 5
from(files("../gradle/libs.versions.toml")) // 6
}
}
}
rootProject.name = "build-logic" // 7
include(":convention") // 8
※nowinandroid/build-logic/settins.gradle.ktsより
1. 依存関係の定義
「dependencyResolutionManagement」では、プロジェクト間での依存関係解決を定義します。
2. リポジトリの定義
「repositories」では、プロジェクトのリポジトリを定義します。
{…}の中は、プロジェクトのRepositoryHandlerに対して実行されます。
3. リポジトリの追加
「google()」では、GoogleのMaven repositoryで依存関係を探すリポジトリを、「mavenCentral()」では、Maven Central repositoryで依存関係を探すリポジトリを追加します。
4. VersionCatalogsの定義
「versionCatalogs」では、バージョンカタログの定義を行います。
5. コンテナにアイテムを追加
「create(String name, Action action)」を使用し、「libs」という名のバージョンカタログを作成しています。
6. バージョンカタログの読み込み
「from(Object obj)」では、バージョンカタログの情報を「”../gradle/libs.versions.toml“」から読み込んでいます。
7. ルートプロジェクトの名前変更
「rootProject」でルートプロジェクトのProjectクラスを受け取り、「.name = “build-logic”」で名前を変更しています。
8. プロジェクトをビルドに追加
プロジェクトをビルドに追加することで、複数のプロジェクトを一緒にビルドすることができます。
プロジェクトの指定は、スラッシュ (/) で区切らずに、コロン (:) を区切り文字として使用する必要があります。
おわりに
次回はnowinandroid/build-logic/convention/build.gradle.ktsについて解説します。
ご要望等がありましたらお気軽にコメントまでお願いします。