Def.sequential
允许按顺序执行多个任务:
myTask := {
Def.sequential(task1, task2, task3)
}
如果
task1
失败(抛出异常),则不会执行剩余的任务。
这与以下内容形成对比,它始终执行所有任务:
myTask := {
task1.value
task2.value
task3.value
}
顺序执行所有这些的最佳方法是什么,即使其中一些失败并报告错误?.
我想执行测试,并知道哪些测试有问题。它们不能并行执行。
一个解决方案是:
task1 := doTask1()
task2 := doTask2()
task3 := doTask3()
myTask := {
val results = Seq(
Try { doTask1() },
Try { doTask2() },
Try { doTask3() }
)
results foreach {
case Failure(e) =>
sys.error(e.getMessage)
case _ =>
}
}
但是对于像
compile
、test
这样的内置任务,要知道其实现并不容易。