有時候也想要一個任務的行為是基于已經(jīng)定義好的取值范圍或者特定規(guī)則, 下面的例子就提供了一種很直觀漂亮的方式:
例子 15.25. 任務規(guī)則
build.gradle
tasks.addRule("Pattern: ping<ID>") { String taskName ->
if (taskName.startsWith("ping")) {
task(taskName) << {
println "Pinging: " + (taskName - 'ping')
}
}
}
gradle -q pingServer1 的輸出
> gradle -q pingServer1
Pinging: Server1
這里的 String 參數(shù)就是用來定義規(guī)則的.
規(guī)則并不只是在通過命令行使用任務的時候執(zhí)行. 你也可以基于規(guī)則來創(chuàng)建依賴關系:
例子 15.26. 基于規(guī)則的任務依賴
build.gradle
tasks.addRule("Pattern: ping<ID>") { String taskName ->
if (taskName.startsWith("ping")) {
task(taskName) << {
println "Pinging: " + (taskName - 'ping')
}
}
}
task groupPing {
dependsOn pingServer1, pingServer2
}
gradle -q groupPing 的輸出
> gradle -q groupPing
Pinging: Server1
Pinging: Server2
如果你運行 “gradle -q tasks”, 你并不能找到名叫 “pingServer1” 或者 “pingServer2” 的任務, 但是這個腳本仍然會執(zhí)行這些任務.