下面是groovy DSL中的代码片段:
plugins {
id("com.github.johnrengelman.shadow") version "5.2.0"
}
这很难理解,如果下面是相应的脚本语法:
plugins({
id(
{
"com.github.johnrengelman.shadow",
version("5.2.0")
}
)
})
如何将DSL语法转换为脚本语法?因为脚本化语法对我来说更具可读性。
id(String)
块中的plugins方法将返回具有方法PluginDependencySpecImpl和version(String)
的apply(boolean)
。所以你只需要这样写:
plugins ({
id("com.github.johnrengelman.shadow").version("5.2.0")
})
工作中的模式称为Command Chain。
Groovy可让您省略方法调用参数周围的括号用于顶级语句。 “命令链”功能将其扩展为允许我们链接此类无括号的方法调用,要求既不要在参数周围加上括号,也不要在链接的点之间加点电话。一般的想法是,像b c d这样的电话实际上是相当于a(b).c(d)。这也适用于多个参数,闭包参数,甚至是命名参数。
MrHaki有一个很好的解释,为什么它会起作用here。
plugins DSL 是应用插件的首选方法。
legacy plugins application(脚本语法)的等效项是:
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "com.github.jengelman.gradle.plugins:shadow:5.2.0"
}
}
apply plugin: "com.github.johnrengelman.shadow"
比插件DSL多写了[[很多。
Gradle团队将其记录为旧版。因此,无论您是否喜欢新的plugins { }
语法,传统方法最终都会消失。