Gradle: BOMを使って依存を指定する
Created at Tue, Feb 18, 2020Gradleの5から、Bill Of Materials(BOM)が使えるようになりました。これが、結構いいものだと思ったので紹介します。
ついでにdependabotの話もちょっとします。
BOM?
BOMを使うことで、 複数のライブラリのバージョンを省略することが出来ます。
ドキュメントの例にはspring-bootが挙げられています。
dependencies {
// import a BOM
implementation platform('org.springframework.boot:spring-boot-dependencies:1.5.8.RELEASE')
// define dependencies without versions
implementation 'com.google.code.gson:gson'
implementation 'dom4j:dom4j'
}
gson、dom4jのバージョンを省略していることが分かると思います。
Androidでよく使うライブラリでBOMに対応しているライブラリには、例えば次があります。
例えば、OkHttpならこんな感じで書けます。
dependencies {
implementation platform("com.squareup.okhttp3:okhttp-bom:4.4.0")
implementation "com.squareup.okhttp3:okhttp"
implementation "com.squareup.okhttp3:logging-interceptor"
}
BOMを使うことで、関連ライブラリをまとめてアップデートすることが出来るのでとても便利です。
dependabot?
直接はBOMに関係ないんですけど、最近、dependabotが便利だと自分の中で話題になっていて、これはライブラリのアップデートを自動でやってくれるbotになります。
例えば、こんな感じのPRを作ってくれます。
Bump versions.retrofit from 2.7.0 to 2.7.1
それでdependabotって、versions.retrofit = '2.7.1'
って感じで、変数で定義すると検知できないって思っていたんですけど、
いろいろ試してみたら、普通に出来ました:D
BOMとdependabotは相性いいぞ!!って書こうと思ったんですけど、変数の場合でもアップデートを検知してくれたので、特に関係なかったです😅
とはいえ、わざわざ自前で変数定義する必要はなくなるので、BOMは便利です!
まとめ
- BOMはいいぞ〜
- dependabotはいいぞ〜