我正在努力学习Gradle.我偏好的学习方式是从低层次了解正在发生的事情.为此,我试图解释有关DSL参考的文档的示例6.1中发生的情况:
task hello {
doLast {
println 'Hello world!'
}
}
Run Code Online (Sandbox Code Playgroud)
我知道这个脚本是在一个上下文中执行的Project.所以我可以从Project 文档中看到有很多重载task(...)方法.看一下签名,我需要选择一个有闭包作为最终参数的签名.因为我们没有在Map这里传递,所以我假设被调用的方法是task(String name, Closure closure).
但是,我正在努力的部分是,在这个脚本中,文字字符串如何hello映射到a String.
另一个例子是例6.7:
task taskX(dependsOn: 'taskY') << {
println 'taskX'
}
task taskY << {
println 'taskY'
}
Run Code Online (Sandbox Code Playgroud)
在这里,我假设我们正在调用task(Map<String, ?> args, String name)方法的形式.但,
taskX最终成为String?Map文字,括号中的部分如何最终成为Map?Project对象解析taskX为未知方法.但是,AFAIK,方法调用在这一点上在语法上不会有效,因为方法调用task紧接在它之前.正如您所看到的,我对示例语法如何映射到DSL参考指南感到有点困惑,这让我真的很难理解基层正在发生的事情.
谢谢!
Pet*_*ser 19
task foo任务声明语法的变化是特殊的,因为它是使用Groovy编译器插件实现的.据我所知,这是唯一一个使用编译器插件来支持特殊语法的情况.
| 归档时间: |
|
| 查看次数: |
2132 次 |
| 最近记录: |