¿Cómo se termina una carrera en SBT sin salir?
Estoy probando CTRL + C pero sale de SBT. ¿Hay alguna manera de salir solo de la aplicación en ejecución mientras se mantiene abierto SBT?
Ctrl + D
funciona solo para el marco de Play.
¿Cómo se termina una carrera en SBT sin salir?
Estoy probando CTRL + C pero sale de SBT. ¿Hay alguna manera de salir solo de la aplicación en ejecución mientras se mantiene abierto SBT?
Ctrl + D
funciona solo para el marco de Play.
Respuestas:
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 separada y bifurcada, como se describe en Forking , puede eliminar esa JVM (por cualquier medio que ofrezca su sistema operativo) sin afectar la JVM de sbt:
fork in run := true
kill
desde la línea de comando, o en el Administrador de tareas (Windows), o Forzar salida o Monitor de actividad (Mac OS X), etc.
kill -9 `ps -h | grep java | grep -v sbt-launch | grep -v grep | awk '{print $1}'`
run
con CTRL + D
Desde sbt versión 0.13.5 puede agregar a su build.sbt
cancelable in Global := true
Se define como "Habilita (verdadero) o deshabilita (falso) la capacidad de interrumpir la ejecución de tareas con CTRL + C". en la definición de claves
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
Se informaron algunos errores:
He encontrado lo siguiente útil cuando tengo control sobre el bucle principal de la aplicación que se ejecuta desde sbt.
Le digo a sbt que se bifurque cuando se ejecuta la aplicación (en build.sbt):
fork in run := true
También le digo a sbt que reenvíe stdin desde el shell de 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 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 apagar, no solo el hilo principal.
Finalmente, inicie sbt, opcionalmente cambie al subproyecto que desea ejecutar, ejecute.
Ahora, cuando desee detener el proceso, cierre su stdin escribiendo CTRL-D en el shell sbt.
Considere usar sbt-revolver . Lo usamos en nuestra empresa y es muy útil. Porque lo que estás pidiendo se puede hacer con:
reStart
reStop
Sin necesidad de configurar el archivo build.sbt.
Puedes usar este complemento agregando:
addSbtPlugin("io.spray" % "sbt-revolver" % "0.9.1")
A su proyecto / plugins.sbt
Ctrl+D
No funciona.