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にアクセスできるというのはなかなかに便利です。実験的機能ということで将来的に変更される可能性もありますが、積極的に利用して良いと思います。