2017-01-08 10 views
2

私はsbtタスクを実行します。終了後の通常のシナリオでは、ターミナルで停止する必要があります。しかし、端末は次の入力の意味を待っていません。タスクが起動した後にスレッドと呼ばれるものがいくつか出ていないと仮定します。sbtタスクを終了するには?

sbtタスクによって開始されたすべてのプロセスを終了して終了するにはどうすればいいですか? どのサービスが停止していないのかをデバッグすることはできましたが、それには時間がかかります。タスク

object TranslationTask { 

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

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

特別な感謝は、私はCMD + Cで端末内に終了する方法を知っているの端末 –

+1

にCRTL + Dを試してみました。私は特にSBTを求めています。 –

+0

あなたのタスクは外部定義された関数を実行していますか?なぜそれを定義して、それを通常のタスクとして実行しないのですか? – marios

答えて

0

詳細

build.sbtで

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

私は、SBTのタスクの終了後ActorSystemを終了する方法を見つけました。

build.sbtで、別のスレッドでタスクを開始します。タスクで

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

SBT stop run without exiting

関連する問題