web-dev-qa-db-fra.com

Comment déboguer Spring Boot avec Netbeans via Maven

Après avoir joué trop longtemps jusqu'à ce que je dispose de la configuration de débogage appropriée dans Netbeans 8.2 avec Spring Boot 1.4.3, je me suis dit que j'écrivais mes résultats sous forme de questions-réponses pour les autres.

Le problème est que la configuration par défaut pour Netbeans ne parvient pas à lancer correctement Spring en mode débogage et lorsque vous effectuez une recherche sur Internet, vous ne trouvez que les informations périmées qui ne fonctionnent pas dans les documents Spring.

La solution est simple si vous savez comment. Veuillez trouver les instructions de configuration correctes ci-dessous.

8
TwoThe

Testé et fonctionne avec Netbeans 8.2 et Spring-Boot 1.4.3:

Tout d’abord, assurez-vous que le plug-in Spring Maven est inclus (il doit déjà être inclus lors de la création d’un nouveau projet Netbeans Spring):

<plugins>
  ...
  <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
      <execution>
        <goals>
          <goal>repackage</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
  ...
</plugins>

C'est aussi une bonne idée d'inclure les outils de développement Spring comme ceci:

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

Maintenant, accédez aux paramètres de votre projet -> Actions -> Déboguer le projet et définissez les paramètres suivants:

 enter image description here

Exécuter les objectifs:

spring-boot:run

Définir les propriétés:

run.jvmArguments=-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}
jpda.listen=true

Maintenant, lancez votre application via le bouton de débogage habituel et Spring doit se connecter correctement au débogueur de la machine virtuelle Java.

13
TwoThe

En testant NetBeans 8.2 et Spring Boot 2.0.1, je n’étais pas capable de faire fonctionner les choses en suivant @ Les instructions de TwoThe . Premièrement, j'ai rencontré un problème où tout ce que j'ai vu était "JPDA Listening Start ..." dans la fenêtre de sortie. Pour résoudre ce problème, j'ai ajouté Spring Devtools en tant que dépendance facultative. Deuxièmement, même si le débogage semblait fonctionner correctement, la fenêtre "Débogage", qui affiche normalement la liste des threads actifs, était vide et les points d'arrêt que j'ai définis n'étaient pas déclenchés. Troisièmement, tenter d'arrêter la session de débogage en appuyant sur le bouton rouge "Terminer la session de débogage" n'arrêterait pas le serveur Tomcat.

Au lieu de changer les objectifs d'exécution en "spring-boot: run", j'ai constaté qu'il suffisait d'utiliser l'action par défaut "Projet de débogage" pour exécuter les objectifs:

 classes de processus org.codehaus.mojo: exec-maven-plugin: 1.2.1: exec 

.. et propriétés:

 exec.args = -Xdebug -Xrunjdwp: transport = dt_socket, serveur = n, adresse = $ {jpda.address} -classpath% classpath $ {packageClassName} 
 exec.executable = Java 
 jpda.listen = true 

(Sidenote, le débogage en tant qu’application Java classique est apparemment l’approche recommandée pour déboguer les applications Spring Boot dans Eclipse; voir Comment déboguer une application Spring Boot avec Eclipse? )

Un conseil utile est que si vous souhaitez déboguer en utilisant un certain profil Spring Boot, dites "débogage", vous pouvez ajouter "-Dspring.profiles.active = debug" à la propriété "exec.args". Voir aussi: Spring Boot exécutant un fichier JAR entièrement exécutable et spécifiant les propriétés -D

4
Daniel Trebbien

enter image description here

Testé sur NetBeans9

Action: Ajoutez n'importe quel nom. Définissez les propriétés: sélectionnez le bouton Ajouter>, sélectionnez Déboguer la construction Maven et déboguez comme toujours -> IDE bouton de débogage

1
Marvel Alvarez