gpt4 book ai didi

gradle - gradle doLast哲学

转载 作者:行者123 更新时间:2023-12-03 12:09:27 27 4
gpt4 key购买 nike

在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"
}

产生以下输出:
: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

我的问题是:doLast的意图是将步骤简单地附加到任务的末尾(例如doFirst附加到开始处)?如果是这样,则doLast似乎毫无意义,除了使用doFirst提供对称性外。用户只需执行myTask << {...}即可将某些内容附加到末尾。我本以为doLast将确保在主执行块之后完成所有“doLast”项。

这仅仅是gradle的doLast应该工作的方式,还是一个bug? (或者我只是愚蠢地在调用doLast之后将一些东西附加到主执行块上-这是在添加另一个执行块后的一个简单错误)。

最佳答案

<<doLast的别名,因此一切正常。

关于gradle - gradle doLast哲学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13503489/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com