Spring Bootのライブラリ
Spring Bootでは通常、・Mavenではspring-boot-starter-parent(が読み込むspring-boot-dependencies)
・Gradleではdependency-managementプラグイン
を利用することで、
例えばjpaが使いたいなあ、と思ったときにspring-boot-starter-data-jpaを読み込むだけで、整合性の取れたバージョンのjpa-core.jarを取ってきてくれる。
逆に言えば、親リリースに含まれないようなbugfix版が欲しい、とか思っても、バージョンBOMを指定するだけでは上げることができなかったりする。
もちろんそこには適当なバージョンの組み合わせじゃコンパイルすら通らないかもしれない、といった理由もあるのでしょうが・・・。
上の依存管理ライブラリを使わなければいい、と思っても入り組んだプロジェクトだとそうもいかないし、全ライブラリを自分で読み込むというのはSpring Bootでは中々難儀。
というところまでが前書きで、実はこの辺はある程度融通がきく仕組みがちゃんと用意されている。
サードパーティライブラリ
サードパーティのライブラリ(hibernate等)はspring-boot-dependenciesのpomのproertiesにバージョンが列挙されている。
この変数値を変更するだけで指定バージョンのものを読み込んでくれる、という具合。
例えば、hibernateであれば
hibernate.version
で定義されているので、同じように自分のプロジェクトのpomに書いて上げればいい。Gradleの場合は、
ext['hibernate.version'] = "バージョン"でいける。
Springのライブラリ
Springのライブラリ(spring-data等)も同じようにいけそうに見えるが、Gradleの場合はうまくいかないかもしれない。
例えばspring-dataの場合はspring-data-releasetrainなのだが、Gradleの場合は以下のほうが確実。
dependencyManagement { imports { mavenBom "org.springframework.data:spring-data-releasetrain:バージョン" } }
ちなみに、どんなバージョンがあるの?とか、どのバージョンのspring-dataに、どのバージョンのjpaが入るの?といったことは、そのものずばりのMaven Repository、
上ならspring-data-releasetrainのリポジトリとpomを見ればいいと思う。
補足:
Spring Cloudのライブラリ
Spring Cloudのライブラリはspring-cloud-dependenciesで管理されていて、考え方は一緒。
dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:バージョン" } }
ちなみに、このpomを見ると個々のspring-cloud-xxxのバージョンが指定できそうな雰囲気・・・
だけど試したことはないです。。。
いじょ