Java 如何将DSL语法转换为脚本化语法
下面是groovy DSL中的代码片段:Java 如何将DSL语法转换为脚本化语法,java,gradle,groovy,dsl,Java,Gradle,Groovy,Dsl,下面是groovy DSL中的代码片段: plugins { id("com.github.johnrengelman.shadow") version "5.2.0" } 这对我来说很难理解,如果下面是相应的脚本语法: plugins({ id( { "com.github.johnrengelman.shadow", version("5.2.0") } ) }) 如何将DSL语法转换为脚本化语法?因为脚本语法对
plugins {
id("com.github.johnrengelman.shadow") version "5.2.0"
}
这对我来说很难理解,如果下面是相应的脚本语法:
plugins({
id(
{
"com.github.johnrengelman.shadow",
version("5.2.0")
}
)
})
如何将DSL语法转换为脚本化语法?因为脚本语法对我来说更具可读性。块中的
id(String)
方法返回一个包含version(String)
和apply(boolean)
。所以你只需要这样写:
plugins ({
id("com.github.johnrengelman.shadow").version("5.2.0")
})
工作模式称为
Groovy允许省略方法调用参数周围的括号
对于顶级语句。“命令链”功能通过以下方式扩展此功能:
允许我们链接这样的无括号方法调用,需要
参数周围没有括号,链表之间也没有点
电话。一般的想法是,像b c d这样的调用实际上是
相当于a(b)、c(d)。这也适用于多个参数,
闭包参数,甚至命名参数
MrHaki对此有很好的解释。应用插件的首选方法是
等效的(脚本化语法)是:
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团队将此记录为遗产。因此,无论您是否喜欢新的
插件{}
语法,传统方法最终都会消失。您说的“脚本化语法”是什么意思你是说kotlin脚本而不是groovy脚本吗?@LeonardBrünings此查询具有脚本化语法:因此,只需将多余的括号添加回,并将其称为脚本化语法?@LeonardBrünings是的。。没错,但我不知道如何转换用DSL编写的插件语法(例如,在上面的查询中给出)?你怎么知道id(“com.github.johnrengelman.shadow”)
和版本(“5.2.0”)
之间有点?这是meRead的问题,我从MrHaki链接了解释,看看我添加的链接,然后你会看到。我如何转换完整的脚本?你必须检查每个块,看看它是如何定义的,但老实说,我不推荐它,只是使用文档中的官方语法,否则,你只会给其他人带来困难,你不能举出例子。我不明白你的答案。上面的代码是脚本语法?Gradle有许多新的应用配置的方法。一般来说,较旧的配置方式通常被称为“脚本化”语法。好的……我正在尝试这样编写gradle语法: