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' }