Myślę, że Ctrl + Ddziała tylko dla frameworka Play.
EnverOsmanov
Odpowiedzi:
44
W konfiguracji domyślnej Twoje uruchomienia odbywają się w tej samej JVM, na której działa sbt, więc nie możesz ich łatwo zabić osobno.
Jeśli wykonujesz swój bieg w oddzielnym, rozwidlonym JVM, jak opisano w Forking , możesz zabić tę JVM (w dowolny sposób oferowany przez system operacyjny) bez wpływu na JVM sbt:
Próbuję to zrobić. W szczególności zaimplementowałem: stackoverflow.com/questions/3868863/ ... ale sbt nadal wychodzi, gdy robię CTRL + C. Jak zabić tylko rozwidloną maszynę JVM?
dsg
2
z killwiersza poleceń lub w Menedżerze zadań (Windows) lub Force Quit lub Activity Monitor (Mac OS X) itp.
Seth Tisue
Po rozwidleniu, aby zabić wszystko, co java oprócz sbt, uruchom:kill -9 `ps -h | grep java | grep -v sbt-launch | grep -v grep | awk '{print $1}'`
dsg
1
Podoba mi się ten pomysł, ale wydaje się, że nie pomaga. Uruchamiam sbt 0.13.1 i dodaję ten wiersz do mojego pliku build.sbt ..
wątpliwość1ejack
musisz zabić runCTRL + D
Timofey
82
Od wersji sbt 0.13.5 możesz dodać do swojego build.sbt
cancelable in Global:=true
Jest zdefiniowane jako „Włącza (prawda) lub wyłącza (fałsz) możliwość przerwania wykonywania zadania za pomocą CTRL + C”. w definicji kluczy
Ctrl+D
nie działa.Ctrl + D
działa tylko dla frameworka Play.Odpowiedzi:
W konfiguracji domyślnej Twoje uruchomienia odbywają się w tej samej JVM, na której działa sbt, więc nie możesz ich łatwo zabić osobno.
Jeśli wykonujesz swój bieg w oddzielnym, rozwidlonym JVM, jak opisano w Forking , możesz zabić tę JVM (w dowolny sposób oferowany przez system operacyjny) bez wpływu na JVM sbt:
źródło
kill
wiersza poleceń lub w Menedżerze zadań (Windows) lub Force Quit lub Activity Monitor (Mac OS X) itp.kill -9 `ps -h | grep java | grep -v sbt-launch | grep -v grep | awk '{print $1}'`
run
CTRL + DOd wersji sbt 0.13.5 możesz dodać do swojego build.sbt
Jest zdefiniowane jako „Włącza (prawda) lub wyłącza (fałsz) możliwość przerwania wykonywania zadania za pomocą CTRL + C”. w definicji kluczy
Jeśli używasz Scala 2.12.7+, możesz również anulować kompilację za pomocą CTRL + C. Odniesienie https://github.com/scala/scala/pull/6479
Zgłoszono kilka błędów:
źródło
Znalazłem następujące przydatne, gdy mam kontrolę nad główną pętlą aplikacji uruchamianej z sbt.
Mówię sbt o rozwidlenie podczas uruchamiania aplikacji (w build.sbt):
Mówię też sbt, aby przekazał stdin z powłoki sbt do aplikacji (w build.sbt):
Na koniec w głównym wątku aplikacji czekam na koniec pliku na stdin, a następnie zamykam JVM:
Oczywiście możesz użyć dowolnego wątku do odczytu wejścia standardowego i zamknięcia systemu, a nie tylko wątku głównego.
Na koniec uruchom sbt, opcjonalnie przełącz się na podprojekt, który chcesz uruchomić, uruchom.
Teraz, gdy chcesz zatrzymać proces, zamknij jego stdin, wpisując CTRL-D w powłoce sbt.
źródło
Rozważ użycie rewolweru SBT . Używamy go w naszej firmie i jest naprawdę przydatny. O to, o co prosisz, można zrobić:
Bez potrzeby konfigurowania pliku build.sbt.
Możesz użyć tej wtyczki, dodając:
Do twojego projektu / plugins.sbt
źródło