W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
任務(wù)的排序功能正在測試和優(yōu)化. 請注意, 這項功能在 Gradle 之后的版本里可能會改變.
在某些情況下, 我們希望能控制任務(wù)的的執(zhí)行順序, 這種控制并不是向上一張那樣去顯示地加入依賴關(guān)系. 最主要的區(qū)別是我們設(shè)定的排序規(guī)則不會影響那些要被執(zhí)行的任務(wù), 只是影響執(zhí)行的順序本身. 好吧, 我知道可能有點抽象.
我們來看看以下幾種有用的場景:
目前, 有 2 種可用的排序規(guī)則: "must run after" 和 "should run after".
當(dāng)你使用 “must run after” 時即意味著 taskB 必須總是在 taskA 之后運行, 無論 taskA 和 taskB 是否將要運行:
taskB.mustRunAfter(taskA)
"should run after" 規(guī)則其實和 "must run after" 很像, 只是沒有那么的嚴(yán)格, 在 2 種情況下它會被忽略:
總之, 當(dāng)要求不是那么嚴(yán)格時, “should run after” 是非常有用的.
即使有目前的這些規(guī)則, 我們?nèi)钥梢詧?zhí)行 taskA 而不管 taskB, 反之亦然.
例子 15.14. 加入 'must run after'
build.gradle
task taskX << {
println 'taskX'
}
task taskY << {
println 'taskY'
}
taskY.mustRunAfter taskX
gradle -q taskY taskX 的輸出
> gradle -q taskY taskX
taskX
taskY
例子 15.15. 加入 'should run after'
build.gradle
task taskX << {
println 'taskX'
}
task taskY << {
println 'taskY'
}
taskY.shouldRunAfter taskX
gradle -q taskY taskX 的輸出
> gradle -q taskY taskX
taskX
taskY
在上面的例子里, 我們?nèi)钥梢灾苯訄?zhí)行 taskY 而不去 taskX :
例子 15.16. 任務(wù)排序不影響任務(wù)執(zhí)行
gradle -q taskY 的輸出
> gradle -q taskY
taskY
為了在 2 個任務(wù)間定義 “must run after” 或者 “should run after” 排序, 我們需要使用 Task.mustRunAfter() 和 Task.shouldRunAfter() 方法. 這些方法接收一個任務(wù)的實例, 任務(wù)的名字或者任何 Task.dependsOn()可以接收的輸入.
注意 “B.mustRunAfter(A)” 或者 “B.shouldRunAfter(A)” 并不影響任何任務(wù)間的執(zhí)行依賴:
之前提到過, “should run after” 規(guī)則在一個執(zhí)行循環(huán)中將被忽略:
例子 15.17. 'should run after' 任務(wù)的忽略
build.gradle
task taskX << {
println 'taskX'
}
task taskY << {
println 'taskY'
}
task taskZ << {
println 'taskZ'
}
taskX.dependsOn taskY
taskY.dependsOn taskZ
taskZ.shouldRunAfter taskX
gradle -q taskX 的輸出
> gradle -q taskX
taskZ
taskY
taskX
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: