Gradle: BOMを使って依存を指定する

Gradleの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は便利です!

まとめ

Written by