
Spring Boot を例に。
Gradle 5.2 から BOM インポートが正式にサポートされました。
implementation platform を使い以下のように書けます。
plugins {
id 'java'
id 'org.springframework.boot' version '2.1.8.RELEASE'
}
sourceCompatibility = targetCompatibility = 1.8
repositories {
jcenter()
}
dependencies {
// import a BOM
implementation platform('org.springframework.boot:spring-boot-dependencies:2.1.8.RELEASE')
// define dependencies without versions
implementation 'org.springframework.boot:spring-boot-starter-web'
}
implementation enforcedPlatform とすると build.gradle 内で明示的にバージョン指定した依存も強制的に上書きするようになります。
普段は implementation platform としておけば良いと思います。
公式ドキュメントは以下になります。
Gradle 4.6 〜 5.1.1 の場合
Gradle 4.6 では、BOM import は Feature Preview なので settings.gradle に以下を書くことで BOM サポートが有効になります。
enableFeaturePreview('IMPROVED_POM_SUPPORT')
そして、build.gradle は以下のような書き方になります。
plugins {
id 'java'
id 'org.springframework.boot' version '2.1.8.RELEASE'
}
sourceCompatibility = targetCompatibility = 1.8
repositories {
jcenter()
}
dependencies {
// import a BOM
implementation 'org.springframework.boot:spring-boot-dependencies:2.1.8.RELEASE'
// define dependencies without versions
implementation 'org.springframework.boot:spring-boot-starter-web'
}
それ以外のレガシーな場合
- Spring Boot プラグインは 1.X では
dependency-managementを含んでいたが、2.X では外れたため個別でプラグイン指定が必要 - Gradle の plugins DSL は 2.10 ぐらいから使えるようになった
- Gradle 3.4 からは依存で
compileやruntimeが非推奨となり代わりにimplementationやapiが推奨となった
など、色々あって面倒なので、もう以下でよいかと。。
buildscript {
repositories {
jcenter()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:2.1.6.RELEASE")
}
}
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management' // Spring Boot 1.X では不要
sourceCompatibility = targetCompatibility = 1.8
repositories {
jcenter()
}
dependencies {
compile 'org.springframework.boot:spring-boot-starter-web'
}