有許多種加入依賴的方式. 在 6.5 小節(jié), “任務(wù)依賴”里, 你已經(jīng)學(xué)習(xí)了如何使用任務(wù)的名稱定義依賴. 任務(wù)名稱可以指向同一個項目里的任務(wù), 或者其他項目里的任務(wù). 為了指向其他項目, 你必須在任務(wù)的名稱前加入項目的路徑. 下面的例子給 projectA:taskX 加入依賴 projectB:taskY :
例子 15.11. 從另外一個項目給任務(wù)加入依賴
build.gradle
project('projectA') {
task taskX(dependsOn: ':projectB:taskY') << {
println 'taskX'
}
}
project('projectB') {
task taskY << {
println 'taskY'
}
}
gradle -q taskX 的輸出
> gradle -q taskX
taskY
taskX
除了使用任務(wù)名稱, 你也可以定義一個依賴對象y:
例子 15.12. 通過任務(wù)對象加入依賴
build.gradle
task taskX << {
println 'taskX'
}
task taskY << {
println 'taskY'
}
taskX.dependsOn taskY
gradle -q taskX 的輸出
> gradle -q taskX
taskY
taskX
更加先進的用法, 你可以通過閉包定義一個任務(wù)依賴. 閉包只能返回一個單獨的 Task 或者 Task 對象的 collection, 這些返回的任務(wù)就將被當(dāng)做依賴. 接下來的例子給 taskX 加入了一個復(fù)雜的依賴, 所有以 lib 開頭的任務(wù)都將在 taskX 之前執(zhí)行:
例子 15.13. 通過閉包加入依賴
build.gradle
task taskX << {
println 'taskX'
}
taskX.dependsOn {
tasks.findAll { task -> task.name.startsWith('lib') }
}
task lib1 << {
println 'lib1'
}
task lib2 << {
println 'lib2'
}
task notALib << {
println 'notALib'
}
gradle -q taskX 的輸出
> gradle -q taskX
lib1
lib2
taskX
For more information about task dependencies, see the Task API.