doLast和leftShift在Gradle任务上的区别? [英] Difference between doLast and leftShift on Gradle task?
问题描述
我意识到传递配置闭包和定义任务动作之间的区别。我相信你不能在配置闭包中使用<<
,因为它看起来像是一个语法错误:
I am aware of the difference between passing in a configuration closure and defining an action for a task. I believe you can't use <<
in a configuration closure because it seems like a syntax error:
task wrong {
<< { println "From doLast" }
}
但是。为什么我不能在上面的配置闭包中使用 leftShift
作为<<
的等价物?在一个更清晰的测试案例中,为什么下面的buildfile不会输出 from leftShift - inside
?
But. Why can't I use leftShift
as an equivalent of <<
in the above configuration closure? In an even more clear test case, why doesn't the following buildfile output the line From leftShift - inside
?
defaultTasks 'tryout'
task tryout {
doLast { println "From doLast" }
leftShift { println "From leftShift - inside" }
}
tryout.leftShift { println "From leftShift - outside" }
当然,这不是一个真正的问题,因为我可以简单地使用doLast。我只是想扩大我对Gradle的理解。当与任务定义一起使用时,感谢!
Of course, this is not a real problem, as I can simply use doLast. I'm just trying to broaden my understanding of Gradle. Thanks!
推荐答案
<<
,而不是真的是按位意义上的左移。它是 doLast
的简写。在gradle DSL中:
<<
when used with a task definition, is not really a leftshift in the bitwise sense. It is shorthand for doLast
. In gradle DSL:
task hello << {
println 'Hello world!'
}
完全相同:
task hello {
doLast{
println 'Hello world!'
}
}
这篇关于doLast和leftShift在Gradle任务上的区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!