<<
是简写doLast
。您问题中的任务并不等同。
这个任务:
task hey << {
println "Hello, Gradle!"
}
相当于这个任务:
task hey {
doLast {
println "Hello, Gradle!"
}
}
第二个示例中的代码将在每次构建脚本执行时执行,无论您是否正在运行该特定任务。例如,如果您有以下任务然后运行gradle goodbye
,您会看到“Hello, World!”和“再见,世界!”即使您只执行“再见”任务:
task hello {
println "Hello, world!"
}
task goodbye {
println "Goodbye, world!"
}
Results:
$ gradle goodbye
Hello, world!
Goodbye, world!
:goodbye UP-TO-DATE
但是,如果您更新了任务定义以使用<<
or doLast
(e.g. task hello << {}
),你只会看到println
来自您执行的任务。
Adam Murdoch 描述了任务中的代码何时执行这个帖子 http://gradle.1045684.n5.nabble.com/task-run-order-lt-lt-syntax-doLast-doFirst-etc-td3337481.html#a3337603。我在这里引用了一些相关信息:
与任务相关的代码有两个不同的时间点
执行:首先是配置时间,也就是构建的时候
脚本执行。想法是,此时你配置任务,
以便它在另一个时间点做正确的事情,即
执行时间处理时间。执行时间是任务执行的时间点
执行其实际工作,并且仅在选择该任务时才会发生
执行,以及在其依赖项执行之后。
每个任务都有一系列操作,这些操作按顺序运行
任务执行时指定。动作只是一个闭包或一个
行动落实。 doFirst() 方法配置要添加的任务
序列开始处的动作。 doLast() 和