scala - SBT deja de funcionar sin salir
terminate (3)
¿Cómo terminas una carrera 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 abierto el SBT?
Desde sbt versión 0.13.5 puede agregar a su build.sbt
cancelable in Global := true
Se define como "Habilita (true) o desactiva (falso) la capacidad de interrumpir la ejecución de tareas con CTRL + C". en la definición de Keys
Hay algunos errores reportados:
En la configuración predeterminada, sus ejecuciones ocurren en la misma JVM que sbt se está ejecutando, por lo que no puede eliminarlas fácilmente por separado.
Si ejecuta su ejecución en una JVM separada, como se describe en Forking , puede eliminar esa JVM (de cualquier modo que ofrezca su sistema operativo) sin afectar la JVM de sbt:
fork in run := true
He encontrado lo siguiente útil cuando tengo control sobre el bucle principal de la aplicación que se está ejecutando desde sbt.
Le digo a sbt que se bifurque cuando ejecuta la aplicación (en build.sbt):
fork in run := true
También le digo a sbt que reenvíe stdin del shell sbt a la aplicación (en build.sbt):
connectInput in run := true
Finalmente, en el hilo principal de la aplicación, espero el final del archivo en stdin y luego cierro 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 shutdown, no solo el hilo principal.
Finalmente, inicie sbt, opcionalmente cambie al subproyecto que desea ejecutar, ejecute.
Ahora, cuando quiera detener el proceso, cierre su stdin escribiendo CTRL-D en el shell sbt.