SBT остановить запустить без выхода - PullRequest
114 голосов
/ 28 февраля 2011

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

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

Ответы [ 4 ]

77 голосов
/ 04 ноября 2015

С версии 0.13.5 sbt вы можете добавить в свой build.sbt

cancelable in Global := true

Это определяется как «Включает (true) или отключает (false) возможность прерывать выполнение задачи с помощью CTRL + C».«.в определении Keys

Если вы используете Scala 2.12.7+, вы также можете отменить компиляцию с помощью сочетания клавиш CTRL + C.Ссылка https://github.com/scala/scala/pull/6479

Сообщено о некоторых ошибках:

42 голосов
/ 10 марта 2011

В конфигурации по умолчанию ваши запуски происходят в той же JVM, что и sbt, поэтому вы не можете легко уничтожить их отдельно.

Если вы выполняете свой запуск в отдельной раздвоенной JVM, как описано в Форкинг , то вы можете убить эту JVM (любыми средствами, предлагаемыми вашей операционной системой), не затрагивая JVM sbt:

fork in run := true
5 голосов
/ 28 июля 2015

Я нашел следующее полезное, когда у меня есть контроль над основным циклом запуска приложения из sbt.

Я говорю sbt разветвляться при запуске приложения (в build.sbt):

fork in run := true

Я также говорю sbt пересылать stdin из оболочки sbt в приложение (в build.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, при необходимости переключитесь на подпроект, который вы хотите запустить, запустите.

Теперь, когда вы хотите остановить процесс, закройте его стандартный ввод, введя CTRL-D в оболочке sbt.

0 голосов
/ 23 марта 2019

Рассмотрите возможность использования sbt-revolver . Мы используем его в нашей компании, и это действительно удобно. То, что вы просите, можно сделать с помощью:

reStart

reStop

Без необходимости настраивать файл build.sbt.

Вы можете использовать этот плагин, добавив:

addSbtPlugin("io.spray" % "sbt-revolver" % "0.9.1")

К вашему проекту / plugins.sbt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...