2014-10-07 39 views
1

我有一個任務必須依次調用其他任務。如何指定依賴任務的順序?

val taskA = taskDef[Unit]("....") 
val taskB = taskDef[Unit]("....") 
val taskC = taskDef[Unit]("....") 
val taskD = taskDef[Unit]("....") 

taskA := { 
    taskB.value 
    taskC.value 
    taskD.value 
} 

taskB := { 
    ... 
} 

taskC := { 
    ... 
} 

taskD := { 
    ... 
} 

其結果是,雖然taskBtaskCtaskDtaskA之前確實叫,我似乎無法找到一個方法來控制它們的順序,即taskD可以taskC之前被調用。

如何指定運行順序?

回答

2

的解決方案是使用一種設置與<<=合併的dependsOn方法:

val taskA = taskDef[Unit]("....") 
val taskB = taskDef[Unit]("....") 
val taskC = taskDef[Unit]("....") 
val taskD = taskDef[Unit]("....") 

taskA := {}, 

taskB := { 
    ... 
}, 

taskC := { 
    ... 
}, 

taskD := { 
    ... 
}, 
taskA <<= taskA.dependsOn(taskD), 

taskD <<= taskA.dependsOn(taskC), 

taskC <<= taskA.dependsOn(taskB),