如何访问多模块Gradle项目中的项目?
#java #android #gradle #模块化

在一个多模块Gradle项目中,您可能会有许多模块。每个模块可以将其他模块作为依赖项。

dependencies {
    implementation(project(":feature:feature-payment"))
    implementation(project(":lib:crypto"))
    implementation(project(":android-lib:navigation"))  
}

如果您有100个模块,您将如何记住模块名称?

An example of multimodule project called nowinandroid

当然,您可以像上面的代码段一样手动键入模块名称。
但是,是否有一种更安全,更快的方法来访问该项目?
是的,有!

通过使用Gradle的TYPESAFE_PROJECT_ACCESSORS,我们可以以类型的方式访问项目中的项目。

如果您的项目存在,IDE将给出自动完成。

Autocomplete

如果您的项目不存在,IDE会给您带来错误。

设置

  1. 确保您使用的是Gradle 7.0或更高
  2. 在您的root project build.gradle文件中,添加以下代码行。
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")

结果

打开您的build.gradlebuild.gradle.kts,上面的依赖项将看起来像这样。

dependencies {
    implementation(projects.feature.featurePayment)
    implementation(projects.lib.crypto)
    implementation(projects.androidLib.navigation)  
}

请注意,Gradle将模块用烤肉串或Snake_case转换为骆驼。从feature-paymentfeaturePayment

概括

通过使用TypeAfe项目登录器,您可以以类型的方式访问项目中的模块。目前,Gradle仍然将此功能标记为实验。但是您可以通过在build.gradle文件中启用TYPESAFE_PROJECT_ACCESSORS来在项目中使用它。

参考: