背景
今やっているPRJで同一groupIdの複数のモジュールを取り込む機会があって、ちまちまバージョン指定するのが嫌だったのでやり方を調べた。
結論
BOMが提供されている場合、implementation platform
をつかう
build.gradle
dependencies {
// gcp
implementation platform('com.google.cloud:spring-cloud-gcp-dependencies:4.4.0')
implementation 'com.google.cloud:spring-cloud-gcp-starter-storage'
implementation 'com.google.cloud:spring-cloud-gcp-starter-bigquery'
implementation 'com.google.cloud:spring-cloud-gcp-starter-logging'
}
ちなみにGradle5.2以降でしかこの書き方はできないっぽい。新しいバージョンを使うようにしましょう
その他
Spring Boot
Spring Bootは上記を使わなくてもpluginを読み込むだけでバージョンが指定できる。楽チン
build.gradle
plugins {
id 'org.springframework.boot' version '3.1.0' // こいつでSpring Bootのバージョン指定
id 'io.spring.dependency-management' version '1.1.0' // これも必須。入れないと依存解決ができない
}
Dependency Management Plugin
上記で読み込んだio.spring.dependency-management
を使うと、implementation platform
を使わなくても以下のようにも指定できる
build.gradle
dependencyManagement {
imports {
mavenBom 'com.google.cloud:spring-cloud-gcp-dependencies:4.4.0'
}
}
BOMが指定できない場合でも、以下のような書き方で共通のバージョンを指定することもできる
build.gradle
dependencyManagement {
dependencies {
dependencySet(group:'com.google.cloud', version: '4.4.0') {
entry 'spring-cloud-gcp-starter-storage'
entry 'spring-cloud-gcp-starter-bigquery'
entry 'spring-cloud-gcp-starter-logging'
}
}
}