web-dev-qa-db-fra.com

IntelliJ 15, SpringBoot devtools livereload ne fonctionne pas

Avoir des problèmes avec la nouvelle fonctionnalité LiveReload avec Spring Boot devtools 1.3. Il ne recharge pas les changements de classe. Je l'ai déjà vue avec IntelliJ @ Devoxx 2015. Y a-t-il un paramètre IDE que je dois avoir activé? Je cours via IDE et non via Gradle. J'ai essayé d'activer "Créer un projet automatiquement", ce qui ne semble pas aider.

Il semble se charger correctement et cherche dans le bon chemin

2015-11-23 05:55:30.592 DEBUG 4700 --- [  restartedMain] o.s.boot.devtools.restart.Restarter      : Starting application com.myapp.Application with URLs [file:/E:/Projects/myapp/build/classes/main/, file:/E:/Projects/myapp/build/resources/main/]

Mes dossiers

build.gradle

buildscript {
    ext {
        springBootVersion = '1.3.0.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 
    }
}

apply plugin: 'Java'
apply plugin: 'Eclipse-wtp'
apply plugin: 'idea'
apply plugin: 'spring-boot' 
apply plugin: 'war'


war {
    baseName = 'myapp'
    version = '0.0.1-SNAPSHOT'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
    maven { url "https://repo.spring.io/snapshot" }
    maven { url "https://repo.spring.io/milestone" }
}

configurations {
    providedRuntime
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-actuator')
    compile('org.springframework.boot:spring-boot-devtools')
    compile('org.springframework.boot:spring-boot-starter-jdbc')
    compile('org.projectlombok:lombok')
    compile('org.springframework.boot:spring-boot-starter-web')
    compile('net.sourceforge.jtds:jtds:1.3.1');
    testCompile('org.springframework.boot:spring-boot-starter-test') 
}

dependencyManagement {
    imports { 
        mavenBom "org.springframework.cloud:spring-cloud-starter-parent:Brixton.M3" 
    }
}


Eclipse {
    classpath {
         containers.remove('org.Eclipse.jdt.launching.JRE_CONTAINER')
         containers 'org.Eclipse.jdt.launching.JRE_CONTAINER/org.Eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8'
    }
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.7'
}

HelloWorldController

@Controller
public class HelloWorldController {

    @RequestMapping("/")
    @ResponseBody
    String home(){

        return "Hello World test";
    }
}
35
Timm-ah

J'imagine que vous êtes en train de coder et je m'attends à ce que DevTools comprenne automatiquement que vous avez changé quelque chose dans votre projet? Devtools le fait en regardant vos dossiers de classpath. Lorsqu'un fichier .class (ou une ressource) a été modifié, devtools prend les mesures appropriées.

Si vous ne voyez rien, c'est probablement parce que vous êtes en train de coder et de ne pas mettre à jour le classpath. Vous devez appeler Make Project pour mettre à jour le chemin de classe. Voir la documentation

31
Stephane Nicoll

Pour résoudre cela, vous pouvez faire comme: 

  1. Ajoutez l'extension LiveReload dans votre navigateur.
  2. Ajoutez des dépendances devtools à votre fichier pom.xml (s'il est maven (spring-boot-devtools)).
  3. Dans votre intellij IDEA, allez à: fichier-> paramètres-> construction, exécution, déploiement. Allez à -> compilateur-> construire le projet automatiquement.
  4. Dans votre IDE intellij: MAJ + Ctrl + A -> registre-> compiler.automake.allow.when.app.running
22
Eddy Bayonne

si vous utilisez IntelliJ IDEA, l'ajout du spring-boot-devtools n'est pas suffisant. En effet, contrairement à Eclipse, vous devez explicitement dire à IntelliJ IDEA de "Créer le projet" pour qu'il soit intégré au chemin de classe cible.

voir sur youtube

La solution la plus simple: run app mode debug et appuyez surCtrl + f9 (raccourci pour la construction)

ou 

  1. Vous devez activer l'option «Créer le projet automatiquement». Vous pouvez Le trouver dans Paramètres - Construire, Exécuter, Déployer - Compilateur
  2. Pour ouvrir le registre, appuyez simplement sur SHIFT + CTRL + A. Dans la fenêtre du registre , Cochez la case "compiler.automake.allow.when.app.running"

 build-project-automatically

 compiler-automake-allow-when-app-running

12
ikarayel

LiveReload et le redémarrage sont des fonctionnalités différentes. Livereload vous permet de détecter les modifications dans le dossier resources/static et d'informer le navigateur que les fichiers ont été modifiés et que la page doit être rechargée.

Votre question décrit le scénario de redémarrage. Si vous souhaitez que votre application recharge automatiquement les modifications apportées aux fichiers * .class, assurez-vous que vos IDE éliminent les classes compilées pour:

build\classes\main

Dans Intellij, allez dans Structure du projet (Ctrl + Alt + Maj + S) et configurez le répertoire de sortie du compilateur du projet. Après cela, vous pouvez modifier les classes et appuyer sur Ctrl + Maj + F9 pour recompiler la classe actuelle ou appuyer sur Ctrl + F9 pour recompiler le projet entier. Spring Boot Devtools détecte les changements dans build\classes\main et effectue automatiquement le redémarrage de votre application.

Si vous souhaitez activer LiveReload pour vos ressources statiques, ajoutez ce qui suit (sinon, vous ne verrez pas de changements de contenu statique lors de l'exécution de l'objectif bootRun):

bootRun {
    addResources = true
}
11
Derp

Следуйте простым шагам ниже, вы начнете работать менее чем зе.

  1. НажмитеCtrl+Shift+A
  2. Поиск реестра ...
  3. прокрутите и найдите "compiler.automake.allow.when.app.running", cliquez ici, cliquez pour le télécharger.
  4. Нажмите закрыть
  5. Меню Файл -> Настройки ...
  6. Развернуть Построение, Выполнение, Развертывание
  7. Выберите компилятор
  8. Становите флажок Построить проект автоматически
  9. Применять
  10. Ok ok

Теперь остановите сервер приложений, а затем запустите ваше приложение, вот и все, вы обнаружите, что автоматический перезапуск/перезагрузка активируется при обнаружении любых изменений в проекте.

Дачного кодирования/взлома.

7
Santhosh_Reddy

De la documentation ici

Comme DevTools surveille les ressources du chemin de classe, le seul moyen de déclencher un redémarrage est de le mettre à jour. La manière de le mettre à jour dépend du IDE utilisé. Dans Eclipse En enregistrant un fichier modifié, le chemin d'accès aux classes sera mis à jour et déclenchera un redémarrage Dans IntelliJ IDEA, la construction du projet (Build → Make Project) aura le même effet.

5
Ankush92

Cela a fonctionné pour moi. Ajoutez la ligne ci-dessous dans le fichier application.properties,

    spring.devtools.restart.enabled=true
0
Ezhil vikraman
Edit - Macros - Start Macro Recording
File - Save All
Build - Build Project
Edit - Macros - Stop Macro Recording - You can save the macro name as “Save & Make Project”
Preferences - Keymap - Macros

Descendez pour développer le répertoire des macros afin de trouver votre nouvelle macro (c'est-à-dire «Enregistrer et créer un projet») . Double-cliquez sur Ajouter un raccourci clavier et appuyez sur Cmd + S si vous utilisez Mac et Ctrl + S si vous utilisez Windows.

Intellij vous dira que Ctrl + S existe déjà, cliquez simplement sur "Remplacer".

Maintenant, tous les ensembles et Ctrl + S devraient déclencher Spring-Boot Devtools

Référence: https://tomyjaya.github.io/2016/10/08/spring-boot-dev-tools-in-intellij/

0
Jana

J'ai eu beaucoup à faire face à ce problème ces derniers mois sur mon MAC. Même en suivant les étapes énumérées ici, cochez "Créer le projet automatiquement" et "Compiler automatiquement". 

Cependant, dans mon travail, où nous utilisons Windows, cela fonctionne parfaitement lorsque je suis les étapes suivantes.

La solution à ce problème sur un MAC j’ai trouvé, c’est d’ajouter une nouvelle configuration d’exécution (Appuyez sur R, puis sur 0), puis ajoutez une nouvelle configuration Maven. Sur l'entrée "Ligne de commande", définissez "spring-boot: run". Appuyez sur "Appliquer" et "Ok" et exécutez le projet en sélectionnant la nouvelle configuration créée. 

Bien sûr, vous pouvez simplement ouvrir un nouveau terminal et simplement taper "mvn spring-boot: run", cela fonctionnera aussi.

Pour répondre à la question ci-dessus, commençons par comprendre une fonctionnalité d’Intellij Idea. Vous devez avoir vu que le fichier que vous apportez une modification n'a pas besoin d'être enregistré. Et les modifications que vous apportez dans n’importe quel fichier non .class restent enregistrées. Pour effectuer une vérification croisée, apportez des modifications au fichier .Java (vous pouvez également choisir un autre fichier) et fermez-le. Il ne sera pas demandé de l'enregistrer. Lorsque vous rouvrez le fichier, vos modifications sont toujours présentes . Mais si vous vérifiez le fichier .class, les modifications apportées ne sont pas reflétées, ce qui est évident car la construction n’a pas encore eu lieu . Au contraire, lorsque nous activons la construction automatique dans Eclipse, elle est effectuée sur un événement et l’enregistrement est: Enregistrer le fichier - > Ctrl + S (Windows). Mais dans l’intellis idée que cet événement ne se produit pas ou que nous ne le réalisons pas ... Alors, considérons le scénario dans lequel nous n’avons pas de source-boot-devtool. Dans ce cas, nous devons toujours reconstruire ou redémarrer le Le serveur doit prendre en compte les modifications, ce qui provoque un événement ..__ Maintenant, en ce qui concerne spring-boot-devtool comme Ankush92 a mentionné à juste titre que devtool surveille les modifications apportées au chemin de classe et que le redémarrage ne se produit que s'il y a un changement dans le chemin. Mais comme je l’ai expliqué plus tôt, nous ajoutons simplement nos modifications de code dans le fichier non .class et nous nous attendons à ce que devtool déclenche un redémarrage même lorsque cette modification ne se reflète pas dans le chemin de la classe . Eclipse pour que l’événement fasse de même est Sauvegarder le fichier (Ctrl + S) lorsque la construction automatique est activée . Alors, la question est maintenant de savoir comment avoir une solution de contournement et imiter ce que Ctrl + S fait dans Eclipse dans l’Intellij Intellij. C'est assez simple, construisons l'application et le raccourci pour cela est Ctrl + F9. Cela déclenchera le même effet dans intellij que Ctrl + S (dans ce scénario) dans Eclipse et aidera le devtool à trouver le changement dans le chemin de classe, l’encourageant ainsi à redémarrer le serveur. Par conséquent, chaque fois que vous modifiez le fichier et souhaitez que le serveur redémarre, appuyez simplement sur Ctr + F9. J'espère que cette explication et la solution de contournement aident.

0
saket0207