LoginSignup
3
3

マルチモジュールプロジェクトではTYPESAFE_PROJECT_ACCESSORSを有効にしてtype-safeにモジュールを参照しよう

Last updated at Posted at 2024-03-17

Gradle 7.0からの実験的機能として、 Type-safe project accessors が使えるようになっています。

 settings.gradle.kts にて以下のようにして機能を有効化します。

settings.gradle.kts
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")

マルチモジュール構成で他のモジュールを参照するとき以下のように文字列でモジュールを指定しますが、

build.gradle.kts
implementation(project(":api"))

Type-safe project accessors を有効化するとRootProjectAccessorというクラスが生成され、このインスタンスにprojectsというシンボルを経由してアクセスできるようになります。これでモジュールをtype-safeに参照できるという仕組みです。
IDEの機能で補完されるため、正確なモジュール名が分からず迷ったり、typoしてしまったりというのを防ぐことができますね。

build.gradle.kts
implementation(projects.api)

細かくモジュールを分割している場合など、ネストされている場合、同様のネストで参照できます。

build.gradle.kts
implementation(project(":data:api"))
build.gradle.kts
implementation(projects.data.api)

モジュール名がケバブケース(foo-bar)やスネークケース(foo_bar)の場合は、キャメルケースに変換された名前でアクセスすることになります。

build.gradle.kts
implementation(project(":data:api-core")) // kebab case
implementation(project(":feature:permission_base")) // nake case
build.gradle.kts
implementation(projects.data.apiCore)
implementation(projects.feature.permissionBase)

機能ごとにモジュールを分けている場合モジュール数も膨大になってきますので、type-safeにアクセスできるというのはなかなかに便利です。実験的機能ということで将来的に変更される可能性もありますが、積極的に利用して良いと思います。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3