TL;DR
-
Dependency Management Plugin
はSpring Boot Gradle Plugin
などから読み取ったバージョンでライブラリの利用する依存も書き換える - これによってライブラリの利用する依存が意図せず書き変わることがある
- 書き換えられると困るライブラリは
dependencies
に追加することで対処できる
本文
起きた問題
Spring Boot Gradle Plugin
+ Dependency Management Plugin
の環境で、利用しているライブラリに不思議なエラーが発生しました。
原因
調査の中で./gradlew dependencies
の出力を確認した所、当該のライブラリが利用している依存のバージョンが下がっており、これによって当該のエラーが発生していることが分かりました。
下がった先のバージョンは./gradlew dependencyManagement
の出力に記載されていたものと一致しました。
冒頭に書いた通り、Dependency Management Plugin
はSpring Boot Gradle Plugin
などからバージョンでライブラリの利用する依存も書き換えます。
本来であれば、これによってプロジェクト全体のライブラリバージョンが揃えられることで、互換性による問題が回避されます。
一方、今回は書き換えによってエラーが発生していました。
対処
一番簡単な対応方法は、バージョンが書き変わると困るライブラリをdependencies
に追加することです(例では適当なライブラリを追加しています)。
build.gradle.kts
dependencies {
+ implementation("com.squareup.okhttp3:okhttp:4.9.3")
}
その他の書き換え方法はドキュメントに記載があります(個人的にext
を書き換える方法も試しましたが、ドキュメントで言及されている通り、Spring
の方で定義されているプロパティが優先されてしまって機能しませんでした)。