残念ながら、gradleのバージョンが古くて(6.9系)version catalogが使えなかったので、その場合にしか役に立たない備忘録
おそらくgradleのバージョンが7.2以上なら多分version catalog使って、こんな面倒なことしなくても色々解決する気がしている developer.android.com Add support for Gradle Version Catalogs (Gradle 7.0) · Issue #3121 · dependabot/dependabot-core · GitHub
後は、最近GAされたdependabotの grouped version を使っても出来るような気もするが、個人的にはktsで完結している方が好みではある
github.blog
以下は、通常であればそれぞれで指定する意味はないケースだが、今回は例としてあげる
できればバージョンを一箇所で指定して読み取るのがベストだが、
後述の理由によりそれができないので springBootVersion の変数をそれぞれ指定して作ることによって、dependabotのPRとしては1つ作成させるようにしている
build.gradle.kts
plugins {
val springBootVersion = "3.1.1"
id("org.springframework.boot") version springBootVersion
}
module/build.gradle.kts
dependencies {
val springBootVersion = "3.1.1"
implementation("org.springframework.boot:spring-boot-starter:$springBootVersion")
}
そうすると↓みたいな感じで、変数に対してまとめてPRを出してくれる

で、なぜ一箇所で定義して読み取る方式ができないかというと、
古い gradle のージョンで恐らく出来ることといえば、
gradle.properties を使って pluginManagement 側で指定しつつ、 dependencies 側は inejct することになると思う
gradle.properties
springBootVersion=3.1.1
settings.gradle.kts
pluginManagement {
plugins {
val springBootVersion: String by settings
id("org.springframework.boot") version springBootVersion
}
}
build.gradle.kts
plugins {
// pluginManagement 側で指定しているので特に指定しない
id("org.springframework.boot")
}
module/build.gradle.kts
dependencies {
val springBootVersion: String by project
implementation("org.springframework.boot:spring-boot-starter:$springBootVersion")
}
ただこれだと、gradleは正しく読み取って処理を行えるが、
dependabotは gradle.properties で指定して埋め込んだバージョンを理解できなくてPRを作ってくれないので、
最初に紹介した変数を複数定義する方式を今回は採用した
ちなみにこの変数を使う方式だと同じバージョンを複数のライブラリに使ってまとめてアップデートすることも可能だったりする
build.gradle.kts
dependencies {
val awsSdkVersion = "2.20.135"
implementation("software.amazon.awssdk:sts:$awsSdkVersion")
implementation("software.amazon.awssdk:s3:$awsSdkVersion")
implementation("software.amazon.awssdk:cognitoidentityprovider:$awsSdkVersion")
}
