scala sbt terminate

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?



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.