web-dev-qa-db-fra.com

Spring Boot Hotswap avec Intellij IDE

J'ai une application Spring Boot qui fonctionne bien avec Intellij IDE. c'est-à-dire que j'ai démarré la classe Application qui a la méthode principale qui délègue à SpringApplication.run. Tout fonctionne très bien sauf le hotswap. Lorsque je change de source, je suis obligé de redémarrer l'application. Même si je démarre l'application en mode débogage, je ne vois pas le hotswap fonctionner. J'ai pu voir que les paramètres de débogage d'Intellij ont activé le hotswap.

Mon observation montre que lorsque j'exécute l'application Springboot, le chemin de classe utilisé est mon

/projets/MonProjet /cours/production /.... 

Fichiers sous classes/production ne sont pas mis à jour lorsque je modifie le code. Intellij IDE compile les fichiers mais ne met pas à jour le répertoire classes/production. Comment puis-je faire fonctionner le hotswap avec IntelliJ IDE pour Spring-Boot?

50
suman j

J'ai découvert la cause profonde. Cela n'a rien à voir avec Spring-boot. Lors de la modification de mes fichiers sources groovy, les fichiers n'étaient pas automatiquement compilés.

Pour recompiler les fichiers modifiés et les échanger:

  • Ctrl+Shift+F9 sous Windows
  • Cmd+Shift+F9 sur Mac
22
suman j

Une solution qui utilise devTools fonctionne:

1 - Ajout de devtools à votre projet

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

2- Activation de la construction automatique

Ouvrez les paramètres -> Build-Execution-Deployment -> Compiler et activez:

Build Project Automatically.

3- Mettez à jour la valeur de compiler.automake.allow.when.app.running

presse ctrl+shift+A et recherchez registry. Dans le registre, activez:

compiler.automake.allow.when.app.running

J'espère que ça aide !


Les références :

82
Radouane ROUFID

Utilisez à ressort . Cela fonctionne très bien avec le rechargement du bean. C'est une alternative gratuite à JRebel.

Une autre façon consiste à utiliser DCEVM ou hotswapagent

9
Michal Z m u d a

Étape 1: Ajouter la dépendance des outils de développement

Maven.

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

Gradle.

dependencies {
    compile("org.springframework.boot:spring-boot-devtools")
}

Étape 2: Allez dans Fichier | Paramètres | Construction, exécution, déploiement | Compilateur

activer Générer automatiquement le projet & Appliquer & [~ # ~] ok [~ # ~]

enter image description here

Étape 3: Appuyez sur la touche de raccourci Ctrl + Maj + A & Rechercher Registre mot-clé et appuyez sur Entrée

enter image description here

Activez complier.automake.allow.when.app.running et cliquez sur Fermer Bouton

enter image description here

Étape 4: Désactivez le cache sur votre navigateur Web préféré

enter image description here

Étape 5: terminé !!!

Regardez la solution sur YouTube

Solution

7
shellhub

J'ai également remarqué le même problème. Je suis sur Intellij 13.1.1. et pour cela d'échanger la classe changée. Je dois exécuter l'application en mode débogage, puis après avoir changé la classe, sélectionnez "Exécuter-> Recharger les classes modifiées" manuellement.

J'ai également le débogueur réglé sur hotswap comme indiqué dans http://www.jetbrains.com/idea/webhelp/reloading-classes.html mais ne semble pas fonctionner.

Quoi qu'il en soit, au moins le menu manuel "Exécuter-> Recharger les classes modifiées" fonctionne.

4
user3206144

Dans mon cas, même après avoir ajouté les outils de développement Spring Boot et vérifié le projet de génération automatiquement, cela ne fonctionnait pas. Ce qui manquait était ceci:

  1. Accédez à la configuration d'exécution du projet.

  2. Réglez l'action on'Update 'et' On frame désactivation 'sur' Update classes and resources '. Et ça a fonctionné comme un charme.

2
Sameer Khanal

Vous pouvez suivre le processus ci-dessous-

enter image description here

0
Pankaj Kumar

Vous pouvez utiliser l'une des méthodes suivantes pour recharger automatiquement les modèles Thymeleaf:

  1. Outils de développement Spring Boot
  2. Modifier le chemin des modèles Thymeleaf
  3. Gulp Watch

Je recommande montre Gulp car il est plus facile à configurer et fonctionne très bien:

var gulp = require('gulp'), 
watch = require('gulp-watch');

gulp.task('watch', function () {
    return watch('src/main/resources/**/*.*', () => {
            gulp.src('src/main/resources/**')
                //replace with build/resources/main/ for netBeans
                .pipe(gulp.dest('out/production/resources/')); 
    });
});

gulp.task('default', ['watch']);

Entrez maintenant la commande suivante dans votre terminal pour démarrer gulp watch:

$ gulp 
//OR
$ gulp watch

J'ai écrit un article de blog sur rechargement automatique des modèles Thymeleaf sans redémarrage dans IntelliJ IDE .

0
attacomsian