СБТ перестать работать без выход



Как вы завершаете запуск в SBT без выхода?



Я пытаюсь CTRL+C, но он выходит из SBT. Есть ли способ выйти только из запущенного приложения, сохраняя SBT открытым?

533   3  

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

    Ничего не найдено.