終止任務(wù)是一個(gè)正在開(kāi)發(fā)的功能.
這里的終止任務(wù)并不是指終止一個(gè)任務(wù), 而是指一個(gè)無(wú)論運(yùn)行結(jié)果如何最后都會(huì)被執(zhí)行的任務(wù).
例子 15.27. 加入一個(gè)任務(wù)終止器
build.gradle
task taskX << {
println 'taskX'
}
task taskY << {
println 'taskY'
}
taskX.finalizedBy taskY
gradle -q taskX 的輸出
> gradle -q taskX
taskX
taskY
即使要終止的任務(wù)失敗了, 終止任務(wù)仍會(huì)繼續(xù)執(zhí)行.
例子 14.28. 當(dāng)任務(wù)失敗時(shí)k
build.gradle
task taskX << {
println 'taskX'
throw new RuntimeException()
}
task taskY << {
println 'taskY'
}
taskX.finalizedBy taskY
gradle -q taskX 的輸出
> gradle -q taskX
taskX
taskY
另外, 如果要終止的任務(wù)并沒(méi)有被執(zhí)行 (比如上一節(jié)講的 up-to-date) 那么終止任務(wù)并不會(huì)執(zhí)行.
當(dāng)構(gòu)建創(chuàng)建了一個(gè)資源, 無(wú)論構(gòu)建失敗或成功時(shí)這個(gè)資源必須被清除的時(shí)候, 終止任務(wù)就非常有用.
要使用終止任務(wù), 你必須使用 Task.finalizedBy() 方法. 一個(gè)任務(wù)的實(shí)例, 任務(wù)的名稱, 或者任何 Task.dependsOn() 可以接收的輸入都可以作為這個(gè)任務(wù)的輸入.