Gradle任务中doLast和leftShift之间的区别?

时间:2016-02-13 23:55:16

标签: gradle groovy

我知道传递配置闭包和定义任务的操作之间的区别。我相信你不能在配置闭包中使用<<,因为它看起来像语法错误:

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的理解。谢谢!

1 个答案:

答案 0 :(得分:10)

<<与任务定义一起使用时,实际上是按位意义上的leftshift。它是doLast的简写。在Gradle DSL中:

task hello << {
    println 'Hello world!'
}

与:

完全相同
task hello {
    doLast{
        println 'Hello world!'
    }
}