web-dev-qa-db-fra.com

Spring Boot DevTools ne fonctionne pas dans Eclipse

J'ai construit une application en utilisant Spring, JPA, MySQL et Web. J'ai développé une page statique dans un dossier de modèles normalement et cela fonctionne.

Mais, lorsque je change quelque chose sur une page statique, je ne peux pas le recharger avec des modifications. Ensuite, j'ouvre le pom.xml et ajoute 

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

Je redémarre l'application, mais ne fonctionne toujours pas lorsque j'effectue des modifications sur la page statique.

Y a-t-il autre chose à faire?

Mon POM.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.engsoftware</groupId>
    <artifactId>cobranca</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>Cobranca</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <Java.version>1.8</Java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-Java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-Tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

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

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>
4
John Mendes

J'ai suivi cet article https://github.com/spring-projects/spring-boot/issues/7479

Donc, pour que devtools fonctionne, vous devez ajouter:

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

Le secret est d'ajouter optionnel True et Scope runtime.

4
John Mendes

Dans votre menu principal Eclipse, votre "Projet" -> "Construire automatiquement"?

7
user204069

Cette question a déjà reçu une réponse, mais pour moi, elle n'a pas fonctionné exactement comme la réponse acceptée ou d'autres réponses l'indiquent.

J'ai devtools travailler de la manière suivante:

1) Utiliser la dépendance devtools comme suit:

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

2) Suppression du cache Spring Maven, sous Linux, ce serait:

rm -rf ~/.m2/repository/org/springframework/*

3) Revenez dans Eclipse, en appuyant sur Alt + F5 et en obligeant à nettoyer le projet et en téléchargeant à nouveau chaque dépendance de Maven dans votre cache.

La clé consiste à définir l'indicateur optional sur true dans la dépendanceETdu devtools en nettoyant le cache Maven.

J'espère que cela est utile à quelqu'un.

4
gorcajo

Selon la documentation Spring Boot:

Les applications qui utilisent spring-boot-devtools redémarrent automatiquement chaque fois que les fichiers du chemin de classe sont modifiés. Cela peut être une fonctionnalité utile lorsque vous travaillez dans un IDE car cela donne une boucle de retour très rapide pour les modifications de code. Par défaut, toute entrée du chemin d'accès aux classes qui pointe vers un dossier sera surveillée pour tenir compte des modifications. Notez que certaines ressources telles que les actifs statiques et les modèles de vue n'ont pas besoin de redémarrer l'application.

http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html#using-boot-devtools-restart

Les modèles et les actifs statiques ne nécessitent pas de redémarrage. Il est fort probable que votre navigateur mette en cache les modèles et utilise la version mise en cache au lieu de demander le nouveau modèle. Si vous effacez le cache des navigateurs, vous devriez voir le modèle mis à jour.


MODIFIER:

Selon la technologie de modèle que vous utilisez, vous devrez définir une propriété dans votre fichier de propriétés pour désactiver le cache de modèle.

# Thymeleaf
spring.thymeleaf.cache = false

#FreeMarker
spring.freemarker.cache = false

#Groovy
spring.groovy.template.cache = false

http://docs.spring.io/spring-boot/docs/current/reference/html/howto-hotswapping.html#howto-reload-static-content

1
Jason White

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

spring.devtools.restart.enabled=true
0
Ezhil vikraman

Même après avoir essayé les réponses susmentionnées, si cela ne fonctionne toujours pas, essayez simplement d'activer automatiquement la construction du projet dans Eclipse. Cela a fonctionné pour moi après cela.

0
ABC