GradleのVersion Catalogを使うと、依存関係の追加方法が少し変わる。
dependencies {
compileOnly(libs.android.gradlePlugin)
compileOnly(libs.kotlin.gradlePlugin)
compileOnly(libs.ksp.gradlePlugin)
}
これは、nowinandroidのbuild-logic:conventionモジュールのbuild.gradle.ktsの一部の内容。
このlibs.android.gradlePluginや、libs.ksp.gradlePluginの内容はどこで定義されているのかというと、libs.versions.tomlにて定義されている。
[versions]
androidGradlePlugin = "7.4.1"
kotlin = "1.8.0"
ksp = "1.8.0-1.0.9"
[libraries]
# Dependencies of the included build-logic
android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "androidGradlePlugin" }
kotlin-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" }
ksp-gradlePlugin = { group = "com.google.devtools.ksp", name = "com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" }
nowinandroidでは、gradleディレクトリにて保存されている。
そして、この設定ファイルはモジュールに存在するsettings.gradle.ktsにてその読み込み先が設定される。
基本的には、gradleディレクトリにlibs.versions.tomlを配置すると自動的に読み込んでくれるらしい。
dependencyResolutionManagement {
...
versionCatalogs {
create("libs") {
from(files("../gradle/libs.versions.toml"))
}
}
}
そして、私がよくわからなかったのはTomlファイル内で使われているgroupやnameである。
android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "androidGradlePlugin" }
調べてみると、このgroupは従来のimplementation "androidx.room:room-runtime:$room_version"の一番左端の部分を表している。
そして、nameは真ん中を表している。
本題に戻ると、group = "com.android.tools.build"はこちらを表している。
そしてname = "gradle"はこちらを表している。
ちなみに、libs.versions.tomlで定義したプロパティ名がハイフン区切りの場合は、ドット(.)を使ってlibs変数を通してアクセスすることができる。