在gradle构建文件中,有多种方法可以指定为特定任务执行的项目.doFirst方法将任务项放在任务堆栈的顶部,以便在任务堆栈的其余部分之前执行该项.如果您需要在主要任务之前做一些准备项目,这非常方便.实际上,如果你多次调用doFirst,那么在最后一次调用中添加的项是执行的第一件事.
理论上,doLast应该做类似的事情,但doLast应该在任务的主要执行完成后调用.但是,在gradle 1.2中,如果你调用doLast然后在gradle.build文件中的doLast之后向主任务添加一些内容,则主任务项是最后一个调用的项.例如,以下gradle构建文件:
task myTask
myTask << {
println "myTask main execution block"
}
myTask.doFirst {
println "myTask doFirst call one"
}
myTask.doFirst {
println "myTask doFirst call two"
}
myTask.doLast {
println "myTask doLast"
}
myTask << {
println "myTask more main execution block"
}
Run Code Online (Sandbox Code Playgroud)
产生以下输出:
:myTask
myTask doFirst call two
myTask doFirst call one
myTask main execution block
myTask doLast
myTask more main execution block
BUILD SUCCESSFUL
Total time: 1.585 secs
Run Code Online (Sandbox Code Playgroud)
我的问题是:doLast的意图是简单地将步骤附加到任务的最后(就像doFirst在开头一样)?如果是这样,除了使用doFirst提供对称性之外,doLast似乎毫无意义.用户可以简单地执行myTask << {...}以将内容添加到最后.我原以为doLast会确保在主执行块之后完成任何"doLast"项.
这只是gradle的doLast应该工作的方式,还是这个bug?(或者我在调用doLast之后将某些东西附加到主执行块上是愚蠢的 - 这是在另一个执行块中添加后的一个简单错误).
Pet*_*ser 34
<<是别名doLast,所以一切都按预期工作.
| 归档时间: |
|
| 查看次数: |
12077 次 |
| 最近记录: |