Je pense Ctrl + Dque cela ne fonctionne que pour le framework Play.
EnverOsmanov
Réponses:
44
Dans la configuration par défaut, vos exécutions se produisent dans la même JVM que sbt, vous ne pouvez donc pas les tuer facilement séparément.
Si vous effectuez votre exécution dans une JVM séparée et fourchue, comme décrit dans Forking , vous pouvez alors tuer cette JVM (par tous les moyens proposés par votre système d'exploitation) sans affecter la JVM de sbt:
J'essaye de faire ça. Plus précisément, j'ai implémenté: stackoverflow.com/questions/3868863/… mais sbt existe toujours lorsque je fais CTRL + C. Comment supprimer uniquement la JVM fourchue?
dsg
2
avec à killpartir de la ligne de commande, ou dans le Gestionnaire des tâches (Windows), ou Forcer à quitter ou Moniteur d'activité (Mac OS X), etc.
Seth Tisue
Après avoir bifurqué, pour tuer tout java sauf sbt, exécutez:kill -9 `ps -h | grep java | grep -v sbt-launch | grep -v grep | awk '{print $1}'`
dsg
1
J'adore cette idée, mais cela ne semble pas aider. J'exécute sbt 0.13.1 et j'ajoute cette ligne dans mon fichier build.sbt ..
doub1ejack
vous devez tuer le runavec CTRL + D
Timofey
82
À partir de la version 0.13.5 de sbt, vous pouvez ajouter à votre build.sbt
cancelable in Global:=true
Il est défini comme "Active (true) ou désactive (false) la possibilité d'interrompre l'exécution de la tâche avec CTRL + C." dans la définition des clés
Ctrl+D
ne marche pas.Ctrl + D
que cela ne fonctionne que pour le framework Play.Réponses:
Dans la configuration par défaut, vos exécutions se produisent dans la même JVM que sbt, vous ne pouvez donc pas les tuer facilement séparément.
Si vous effectuez votre exécution dans une JVM séparée et fourchue, comme décrit dans Forking , vous pouvez alors tuer cette JVM (par tous les moyens proposés par votre système d'exploitation) sans affecter la JVM de sbt:
la source
kill
partir de la ligne de commande, ou dans le Gestionnaire des tâches (Windows), ou Forcer à quitter ou Moniteur d'activité (Mac OS X), etc.kill -9 `ps -h | grep java | grep -v sbt-launch | grep -v grep | awk '{print $1}'`
run
avec CTRL + DÀ partir de la version 0.13.5 de sbt, vous pouvez ajouter à votre build.sbt
Il est défini comme "Active (true) ou désactive (false) la possibilité d'interrompre l'exécution de la tâche avec CTRL + C." dans la définition des clés
Si vous utilisez Scala 2.12.7+, vous pouvez également annuler la compilation avec CTRL + C. Référence https://github.com/scala/scala/pull/6479
Il y a quelques bugs rapportés:
la source
J'ai trouvé ce qui suit utile lorsque j'ai le contrôle sur la boucle principale de l'application exécutée à partir de sbt.
Je dis à sbt de fork lors de l'exécution de l'application (dans build.sbt):
Je dis également à sbt de transmettre stdin du shell sbt à l'application (dans build.sbt):
Enfin, dans le thread principal de l'application, j'attends la fin du fichier sur stdin puis j'arrête la JVM:
Bien sûr, vous pouvez utiliser n'importe quel thread pour lire stdin et shutdown, pas seulement le thread principal.
Enfin, démarrez sbt, basculez éventuellement vers le sous-projet que vous souhaitez exécuter, exécutez.
Maintenant, lorsque vous souhaitez arrêter le processus, fermez son stdin en tapant CTRL-D dans le shell sbt.
la source
Pensez à utiliser sbt-revolver . Nous l'utilisons dans notre entreprise et c'est vraiment pratique. Ce que vous demandez peut être fait avec:
Sans avoir besoin de configurer le fichier build.sbt.
Vous pouvez utiliser ce plugin en ajoutant:
Vers votre projet / plugins.sbt
la source