按照将 Jetpack Compose 编译器迁移到专用 Compose 编译器 Gradle 插件的说明时,我发现这一步有点令人困惑:
- 将 Gradle 插件添加到根 build.gradle.kts 文件中:
plugins { // ... alias(libs.plugins.compose.compiler) apply false }
插件本身实际上在每个子模块中应用了相同的确切版本:
- 将该插件应用到每个使用 Jetpack Compose 的模块:
plugins { // ... alias(libs.plugins.compose.compiler) }
对我来说,第 2 步似乎是多余的:
alias(libs.plugins.compose.compiler) apply false
被移除时,一切都正常工作我发现这种在根目录中定义插件而不应用它们的模式非常普遍。它用于默认的 Android 项目模板。另外,我发现了一些针对所有插件专门遵循这种风格的示例:例如Jetsnack
有谁知道这些额外的代码行
alias(libs.plugins.compose.compiler) apply false
实际上带来了什么价值?我自己找不到答案。
我无法谈论 Android 或特定插件的具体细节,但语法
apply false
意味着解析插件,但不应用该插件。
解析意味着解析插件本身以及该插件的任何关联依赖项。这使得插件代码、类路径及其依赖项可在构建脚本中使用。这对于重用插件中的任务类或将其应用到当前脚本之外的其他目标非常有用。
https://docs.gradle.org/current/userguide/plugins.html#sec:subprojects_plugins_dsl