基本上是标题。
我找不到一个简单的比较,解释这两者之间的差异:
pluginManagement {
repositories {
gradlePluginPortal()
google()
}
plugins {
id "com.some.awesomeplugin" version "1.2.3"
id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false
}
}
// And these:
plugins {
id "com.another.greatplugin" version "2.1.37"
id "com.android.application" version "7.3.0" apply false
}
我知道Gradle中可以有3种类型的插件:
1.项目插件,在评估单个build.gradle
文件时调用其apply()
回调:
class BuildPhasePlugin : Plugin<Project>
1.设置插件,当settings.gradle
文件被评估时,其apply()
回调被调用:
class SettingsPhasePlugin : Plugins<Settings>
1.插件,其apply()
在初始化脚本(init.gradle
)被评估时被调用:
class InitPhasePlugin : Plugin<Gradle>
我想这3种类型的插件在某种程度上与它们可以应用于settings.gradle
中的plugins {}
块有关?
1条答案
按热度按时间velaa5lx1#
pluginManagement { plugins { ... } }
没有应用任何插件,也没有将它们添加到任何类路径,因此apply false
是一个no-op,并且应该imho实际触发语法错误。这个块只是集中定义插件的版本,当它们在其他地方使用时没有版本。现在我不会再使用这个块了,而是使用版本目录来集中定义版本,包括插件版本。
顶层的
plugins { ... }
块实际上应用了指定的设置插件(或者在与apply false
一起使用时将它们添加到类路径中)。