残念ながら、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") }