3 ответов:
в конфигурации по умолчанию ваши запуски происходят в той же JVM, что и sbt, поэтому вы не можете легко убить их отдельно.
Если вы выполняете свой запуск в отдельном разветвленном JVM, как описано в разветвление, тогда вы можете убить эту JVM (любыми средствами, которые предлагает ваша операционная система), не затрагивая JVM sbt:
fork in run := true
из sbt версии 0.13.5 вы можете добавить в свою сборку.СБТ
cancelable in Global := trueон определяется как "включает (true) или отключает (false) возможность прерывать выполнение задачи с помощью CTRL+C." В определение ключей
Если вы используете Scala 2.12.7+, вы также можете отменить компиляцию с помощью CTRL+C. Ссылка https://github.com/scala/scala/pull/6479
есть некоторые ошибки сообщается:
Я нашел следующее полезным, когда у меня есть контроль над основным циклом приложения, запускаемого из sbt.
Я говорю sbt fork при запуске приложения (в сборке.sbt):
fork in run := trueЯ также говорю sbt переслать stdin из оболочки sbt в приложение (в сборке.sbt):
connectInput in run := trueнаконец, в главном потоке приложения я жду конца файла на stdin, а затем завершаю работу JVM:
while (System.in.read() != -1) {} logger.warn("Received end-of-file on stdin. Exiting") // optional shutdown code here System.exit(0)конечно, вы можете использовать любой поток для чтения stdin и выключения, а не только основной поток.
наконец, запустите sbt, необязательно переключитесь на подпроект, который вы хотите запустить, запустите.
Теперь, когда вы хотите остановить процесс, закройте его stdin, введя CTRL-D в оболочке sbt.
Comments