如何使sbt运行另一个连续命令而不管前面的命令结果如何?

时间:2017-01-04 08:02:40

标签: scala sbt

我的测试很慢。真的很慢。就像我可以在等待它们完成缓慢的同时获得另一杯咖啡并阅读一些文章。因此,我将此任务添加到build.sbt,以便在我的测试完成时提醒我。

lazy val alertMe = taskKey[Unit]("Alert me when testing is completed.")

alertMe in Test := {
  "say \"testing is completed\""!
}

注意我在OS X上使用了say命令。然后我就像这样使用了这个任务。

;test ;alertMe

瞧!这非常有效......仅适用于成功的测试。如果任何测试用例失败,则测试任务将结果返回为错误,并且不调用alertMe。

这种行为是可以理解的。但我希望我的任务,提醒我,无论测试任务结果如何都要运行。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

也许您可以在test任务中添加alertMe任务,例如:

lazy val alertMe = taskKey[Unit]("Alert me when testing is completed.")

alertMe := {
  Command.process("test", state.value)
  "say \"testing is completed\""!
}

用法:sbt alertme,它将运行test任务和shell命令。

Command.process将执行test任务,而不会导致当前任务失败。所以命令总是会被执行。