据我了解,printlns是在任务的配置阶段显示的(除非将其放置在doLast动作中)。因此给出以下任务:
ext {
changeset = 'placeholderChangeset'
}
task getChangeset {
process = '/usr/bin/git describe --always'.execute()
process.waitFor()
changeset = process.getText()
println "Changeset obtained from GIT is: $changeset"
doLast {
println '\n++++++++++++++++++++++++++++++++++'
println '+++++ task getChangeset executed'
println '++++++++++++++++++++++++++++++++++++'
}
}
如果我使用运行,./gradlew
则输出将是:
********************************
** task getChangeset
********************************
Changeset obtained from GIT is: 9bd49ca
如果使用运行它,./gradlew getChangeset
则输出将是:
********************************
** task getChangeset
********************************
Changeset obtained from GIT is: 9bd49ca
...
:app:getChangeset
++++++++++++++++++++++++++++++++++
+++++ task getChangeset executed
++++++++++++++++++++++++++++++++++++
在第一次运行中,任务尚未执行。更改集的值仍然显示,因此process = ... execute()行已执行。
因此,我很困惑,要“执行”任务实际上是什么意思,如果在此示例中,这显然并不意味着任务中的代码语句没有执行,就象它们最明显地那样。获取变更集的值。如果未执行的任务与未执行的任务对任务中代码的执行或未执行没有影响,有什么区别?
Aprintln
与其他代码没有任何特殊之处或不同。不在该doLast{}
块内的任何代码都将在配置阶段执行,而该dolast{}
块将在执行阶段执行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句