Gradle 7.0から導入された Version catalog を使ったライブラリ管理方法についてまとめておきます。
また、Gradle 7.2ではいくつか改善がされてるので、今回はGradle 7.2を使っていきます。
Gradleで使用するライブラリの依存関係を定義するときに、これまでもいろいろな方法がありました。例えば、extra propertiesを定義したり、buildSrcで定義したり、など。
これらの方法とは別に Version catalog という新しい方法を使うことができるようになりました。
Version catalogの定義
Version Catalogを使ってどのようにライブラリを管理するかを見ていきます。例として、androidxのviewmodelとlivedataを使う場合です。
settings.gradle
に以下のように記述します。
次に使いたい箇所の build.gradle
に以下のように書きます。
settings.gradle
に定義したものを build.gradle
で使うだけです。
少しややこしいのが、定義は lifecycle-viewmodel
のようにハイフン区切りのものが、使用するときは、 lib.lifecycle.viewmodel
のようにドット区切りに変わることです。
もう少し便利な使い方を見ていきます。
バージョンを定義する
先程の例では、同じバージョンを使用していましたが、こういう場合はバージョンを別に定義することで一箇所で管理することができます。
version
というのでバージョンを定義できるので、それを versionRef
として参照している感じです。
ライブラリをまとめて管理
よくあるケースとして、複数のライブラリを一緒に使用したい場合があります。こういった場合も Version catalog では管理することができます。
bundle
を使って、複数のライブラリをまとめることができます。
これを build.gradle
で以下のように使用することができ、複数のライブラリを一つのライブラリかのような依存定義で書けるようになります。
libs.bundles
のあとに自分で定義した名前を書くことで使用できます。
この例だと一行で viewmodel と livedata が同時に依存関係に追加されます。
Pluginの管理
最後にPluginの管理についてです。Version catalog でPluginを管理するには行かようにします。
toPluginId
でPluginのidを指定できます。さらに version
または versionRef
を使ってバージョンを指定します。
build.gradle では以下のように使用します。
plusings
ブロックで alisas
を使って指定します。
Tomlを使った定義
これまで見てきた方法は settings.gradle
をにコードを書くような感じで定義していました。
Version catalog ではTomlで定義ファイルを作成することもできます。
以下に例を示します。Tomlファイルは gradle
ディレクトリ直下に libs.versions.toml
で配置することで自動で認識してくれます。
このように外部ファイルにて一元管理することができるようになります。
使うときは、 settings.gradle
に定義したとき同じようにできます。
Tips
最後にVersion catalogを使用する際のTipsを紹介しておきます。
文字列として参照する
implementation 等で使用するのではなく、単純な文字列として参照する方法です。例えば、 composeOptions
の指定などで使用する場合です。
get()
で取得することで単純な文字列として扱えます。
BOMを扱う
BOMで提供されてるものを扱う方法です。
まず、TOML側です。
ポイントとしてはBOMでバージョンを指定してるので、 module
のみを指定します。
使うときは以下のようになります。
pluginsブロックで参照できないPluginを使用したい場合
Hiltのような、Gradleの plugins
ブロックで解決できないPluginを使用したい場合です。
追記: 今はHiltでもGradle Plugin DSLが使用できるようになっていますので、Hiltではこの設定は不要になります。
これだけだと、Hiltのプラグインは plugins
で使用できるid名にはなっていないため見つからずにエラーになります。
こういう場合は settings.gradle
の pluginManagement
に以下のように記述することで解決できます。