Gradle 格拉德尔多拉斯特哲学

Gradle 格拉德尔多拉斯特哲学,gradle,groovy,Gradle,Groovy,在gradle构建文件中,有多种方法指定为特定任务执行的项。doFirst方法将任务项放在任务堆栈的顶部,以便在任务堆栈的其余部分之前执行该项。如果你需要在主要任务之前做一些准备工作,这是非常方便的。事实上,如果您多次调用doFirst,那么在最后一次调用中添加的项就是第一个执行的项 理论上,doLast应该做类似的事情,但是doLast应该在任务的主要执行完成后被调用。但是,在gradle 1.2中,如果调用doLast,然后在gradle.build文件中的doLast之后向主任务添加一些内

在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"
}
我的问题是:doLast的目的是简单地将步骤附加到任务的末尾(就像doFirst附加到开始)?如果是这样的话,除了提供doFirst的对称性外,doLast似乎毫无意义。用户只需执行myTask
注意

: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