下面的代码片段有什么区别
ExecuteScalar()
和
task hello {
println 'Hello world!'
}
答案 0 :(得分:2)
Gradle有两个阶段:配置和执行。
在配置阶段,Gradle解析并执行build.script DSL代码。在解析过程中,Gradle会创建任务实例并执行其内部代码以进行配置。
在第一个示例中,println
代码将在此配置过程中立即执行。
在第二个示例中,doLast
闭包将添加到任务中。它只在执行阶段执行。
要查看差异,请修改任务:
task myTask {
println 'hello'
doLast {
println 'hello again'
}
}
输出
hello <---- this was configuration phase
:myTask
hello again <---- this was execution phase
答案 1 :(得分:1)
第一段代码应为:
task hello << {
println 'Hello world!'
}
这意味着:
双&lt;&lt; ,是定义Gradle任务的简写, 因此,长手是:
task hello {
doLast {
println 'Hello world!'
}
}
所以,第二段代码只是第一段代码的缩写。双&lt;&lt;&lt;&lt;是定义doLast任务块的简短形式