CSS調整

2018年8月24日

Spring Bootの依存ライブラリのバージョンだけ上げる

Spring Bootの依存ライブラリのバージョンだけを上げる為のメモ。

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のバージョンが指定できそうな雰囲気・・・
だけど試したことはないです。。。

いじょ