我知道传递配置闭包和定义任务的操作之间的区别。我相信你不能在配置闭包中使用<<
,因为它看起来像语法错误:
task wrong {
<< { println "From doLast" }
}
但是。为什么我不能在上面的配置闭包中使用leftShift
作为<<
的等价物?在一个更加清晰的测试用例中,为什么以下构建文件不输出行From leftShift - inside
?
defaultTasks 'tryout'
task tryout {
doLast { println "From doLast" }
leftShift { println "From leftShift - inside" }
}
tryout.leftShift { println "From leftShift - outside" }
当然,这不是一个真正的问题,因为我可以简单地使用doLast。我只是想扩大我对Gradle的理解。谢谢!
答案 0 :(得分:10)
<<
与任务定义一起使用时,不实际上是按位意义上的leftshift。它是doLast
的简写。在Gradle DSL中:
task hello << {
println 'Hello world!'
}
与:
完全相同task hello {
doLast{
println 'Hello world!'
}
}