web-dev-qa-db-fra.com

IntelliJ ne termine pas les applications Spring Boot construites avec gradle

J'utilise IntelliJ 13.1 sur Linux et j'essaie de créer une application de base REST en suivant l'exemple http://spring.io/guides/gs/spring-boot/

Lorsque j'exécute le bootRun cible à partir d'IntelliJ, le serveur Tomcat intégré est démarré et tout fonctionne correctement.

10:09:35: Executing external task 'bootRun'...
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:findMainClass
:bootRun

Mais arrêter l'exécution n'affecte pas la tâche de gradle:

10:11:40: External task execution finished 'bootRun'.

Je peux toujours accéder à l'instance Tomcat sur le port configuré. Seule la fermeture d'IntelliJ détruira le processus.

J'ai cherché sur ce sujet mais je n'ai trouvé aucune réponse raisonnable. Je me demande si c'est un

  • problème de gradle (utilisation de Gradle wrapper version 1.11)
  • Problème Linux (Ubuntu 12.04)
  • Problème IntelliJ (IDEA 13.1.2)
  • Problème Spring Boot (essayé différentes versions de 1.0.0.RELEASE à 1.1.0.M2)
41

Je sais que cette réponse a déjà été donnée, mais comme il s'agit du premier sujet de recherche dans Google, j'ai pensé partager une alternative avec laquelle je suis allé et que je n'ai pas trouvé dans les autres sujets que j'ai lus.

Mon problème principal avec cette terminate était que je changeais toujours quelque chose dans mes classes, que je devais redémarrer le serveur et que cela échouait donc je devais parfois stop/start le serveur.

Pour éviter cela, j'utilise spring-boot-devtools . Fondamentalement:

Les applications qui utilisent spring-boot-devtools redémarrent automatiquement chaque fois que les fichiers du chemin de classe sont modifiés.

Le seul problème est que, sur Intellij, seul le projet makes est cliqué si vous cliquez sur Build > Make Project. Vous devez donc le configurer pour créer automatiquement ou ne pas cliquer sur make.

Pour l'utiliser, ajoutez simplement la dépendance à votre build.gradle / pom.xml: compile('org.springframework.boot:spring-boot-devtools')

J'ai trouvé cela très utile en développement.

0
Felipe S.

J'utilise IntelliJ sur Mac, l'exécution de l'application de démarrage Spring posait le même problème. À chaque fois que je lance l'application dans Terminal et que j'utilise CTRL + Z, le terminal s'exécute pour exécuter l'application. Mais lorsque je lance l'application à nouveau dans le même terminal, une erreur s'affiche en indiquant que le port 8080 était utilisé. Je viens d'essayer l'option de fermer la session du terminal (clic droit -> sélectionner -> fermer la session). Cela ferme le terminal. Lorsque je clique à nouveau sur l'option de terminal et que je lance l'application, tout se passe bien.

0
Vijayakumar S