SBT detener ejecutar sin salir


¿Cómo se termina una ejecución en SBT sin salir?

Estoy intentando CTRL+C pero sale SBT. ¿Hay alguna forma de salir solo de la aplicación en ejecución mientras se mantiene SBT abierto?

Author: Oleg Mirzov, 2011-02-28

3 answers

En la configuración predeterminada, sus ejecuciones ocurren en la misma JVM que sbt está ejecutando, por lo que no puede eliminarlas fácilmente por separado.

Si ejecuta su ejecución en una JVM bifurcada separada, como se describe en Forking, entonces puede eliminar esa JVM (por cualquier medio que ofrezca su sistema operativo) sin afectar la JVM de sbt:

fork in run := true
 40
Author: Seth Tisue,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-26 16:50:46

Desde la versión sbt 0.13.5 puedes añadirla a tu compilación.sbt

cancelable in Global := true

Se define como "Habilita (true) o deshabilita (false) la capacidad de interrumpir la ejecución de tareas con CTRL + C." en la definición de teclas

Si está utilizando Scala 2.12.7 + también puede cancelar la compilación con CTRL + C. Referencia https://github.com/scala/scala/pull/6479

Hay algunos errores comunicado:

 66
Author: Jonas Anso,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-10-02 09:01:12

He encontrado lo siguiente útil cuando tengo el control sobre el bucle principal de la aplicación que se ejecuta desde sbt.

Le digo a sbt que bifurque cuando ejecute la aplicación (en build.sbt):

fork in run := true

También le digo a sbt que reenvíe stdin desde el shell sbt a la aplicación (en build.sbt):

connectInput in run := true

Finalmente, en el hilo principal de la aplicación, espero el fin del archivo en stdin y luego apago la JVM:

while (System.in.read() != -1) {}
logger.warn("Received end-of-file on stdin. Exiting")
// optional shutdown code here
System.exit(0)

Por supuesto, puede usar cualquier hilo para leer stdin y apagado, no solo el hilo principal.

Finalmente, iniciar sbt, opcionalmente cambiar al subproyecto que desea ejecutar, ejecutar.

Ahora, cuando desee detener el proceso, cierre su stdin escribiendo CTRL-D en el shell sbt.

 3
Author: kilo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-28 20:27:06