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
変数を通してアクセスすることができる。