如何退出某个sbt任务?

时间:2017-01-08 21:28:33

标签: scala sbt task actor

我运行一个sbt任务。完成后的正常情况,它应该在终端停止。但终端不等待下一个输入含义:我的任务一直在运行。我假设在任务启动后没有退出一些被调用的线程。

如何退出清理并终止sbt任务启动的所有进程? 我可以调试哪些服务没有停止,但需要很长时间才能搞清楚。

更多详情

在build.sbt

lazy val refreshTranslations = taskKey[Unit]("blabla")
fullRunTask(refreshTranslations, Compile, "tasks.TranslationTask")

在任务中

object TranslationTask {

  def main(args: Array[String]): Unit = {
    // background stuff with ActorSystem() , AhcWSClient()
    Await.result(service.get, 20.seconds)
    ...
  }
}

1 个答案:

答案 0 :(得分:0)

我找到了一种在SBT任务完成后退出ActorSystem的方法。

在build.sbt中,在不同的线程中启动任务。

lazy val refreshTranslationsFallback = taskKey[Unit]("Refresh the translations file fallback")
fullRunTask(refreshTranslationsFallback, Compile, "tasks.TranslationTask")
fork in refreshTranslationsFallback := true

在任务中,

object TranslationTask {

  def main(args: Array[String]): Unit = {
    // background stuff with ActorSystem() , AhcWSClient()
    ...
    scala.sys.exit() // important
  }
}

特别感谢SBT stop run without exiting