gradle - 插件{}(脚本块)与pluginManager.apply()

har*_*012 8 java gradle

我正在将插件应用到 Gradle 构建脚本。但碰巧有很多方法可以做到这一点。

我找到了以下两种将插件应用到Gradle项目的方法:

  1. 用于声明在脚本(即脚本块)中使用的插件的 DSL plugins {},我认为它配置了一个PluginDependenciesSpec对象。(读这个

    • 为什么 DSL 文档的脚本块plugins {}部分中没有显示脚本块?Project
  2. 调用pluginManager.apply()(将插件应用于实例PluginManager)或调用plugins.apply()(将插件应用于实例PluginContainer)(阅读本文

因此,为了应用org.gradle.java插件,我可以在文件中执行以下操作build.gradle

>> pluginManager.apply 'org.gradle.java'

>> plugins.apply 'org.gradle.java'

>> plugins {
    id 'org.gradle.java'
}
Run Code Online (Sandbox Code Playgroud)

两者之间有什么区别?

PS:我在的文档PluginDependenciesSpec中找到了这个,但是为什么有这么多不同的方法呢?

plugins {} 块的用途与 PluginAware.apply(java.util.Map) 方法类似,可用于将插件直接应用于 Project 对象或类似对象。一个关键的区别是,通过 plugins {} 块应用的插件在概念上应用于脚本,并扩展为脚本目标。目前,就最终结果而言,两种方法之间没有明显的实际差异。