java - plugin - spring initializr
IntelliJ no termina las aplicaciones Spring Boot compiladas con gradle (2)
Estoy usando IntelliJ 13.1 en Linux y trato de construir una aplicación REST básica siguiendo el ejemplo http://spring.io/guides/gs/spring-boot/
Cuando ejecuto el bootRun de destino desde IntelliJ, el servidor de tomcat integrado se inicia y todo funciona bien.
10:09:35: Executing external task ''bootRun''...
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:findMainClass
:bootRun
Pero detener la ejecución no afecta a la tarea gradle:
10:11:40: External task execution finished ''bootRun''.
Todavía puedo acceder a la instancia de tomcat en el puerto configurado. Solo cerrar IntelliJ destruirá el proceso.
Busqué sobre este tema pero no pude encontrar ninguna respuesta razonable. Me pregunto si es un
- problema de gradle (utilizando la versión 1.11 de gradle wrapper)
- Problema de Linux (Ubuntu 12.04)
- Problema de IntelliJ (IDEA 13.1.2)
- Problema de Spring Boot (probado diferentes versiones desde 1.0.0.RELEASE a 1.1.0.M2)
Estoy bastante seguro de que es un problema de IntelliJ porque:
Cuando ejecuta bootRun
desde la integración bootRun
de IntelliJ y luego presiona detener, la aplicación continúa ejecutándose como mencionó.
Sin embargo, si usa la línea de comando y ejecuta gradle bootRun
y luego usa Cntrl + C , la aplicación se detiene perfectamente.
Tenga en cuenta que mi configuración es Windows 7, IntelliJ 13.1.3, Gradle 1.12 y Spring Boot 1.1.0.M2.
Si lo que necesita es poder depurar fácilmente su aplicación, todo lo que necesita hacer es ejecutar la clase Java (o Groovy) que tiene el método main
, ¡ya que es la forma más fácil de ejecutar las aplicaciones Spring Boot! Felicitaciones a Spring Boot por eso!
Por supuesto, puede seguir utilizando Gradle para tareas como ejecutar todas las pruebas o crear la aplicación empaquetada.
Sé que esta respuesta ya fue respondida, pero como este es el primer tema cuando busco en Google, pensé en compartir una alternativa con la que fui y no encontré en otros temas que leí.
Mi principal problema con esta terminate
era que siempre cambiaba algo en mis clases, necesitaba reiniciar el servidor, y fallaba, así que necesitaba stop/start
el servidor algunas veces.
Para evitar esto, uso spring-boot-devtools . Básicamente:
Las aplicaciones que usan spring-boot-devtools se reiniciarán automáticamente siempre que cambien los archivos en el classpath.
La única pega es que en Intellij solo makes
el proyecto si hace clic en Build > Make Project
, por lo tanto, configúrelo para que se cree automáticamente o recuerde hacer clic en make
.
Para usar, simplemente agrega la dependencia a tu build.gradle / pom.xml
: compile(''org.springframework.boot:spring-boot-devtools'')
Encontré que esto es realmente útil en el desarrollo.