web-dev-qa-db-fra.com

Comment exécuter Tomcat7-maven-plugin en mode débogage avec IntelliJ IDEA

Mon problème est que je ne peux pas exécuter de débogage distant avec Tomcat7-maven-plugin . Ce que j'utilise:

  • Maven
  • Tomcat7 plugin à maven
  • IntelliJ IDEA Ultimate 2016.2.2

Ofc Maven est fourni par défaut avec IntelliJ. J'ai déjà essayé avec MvnDebug Tomcat7: exécutez la commande mais intelliJ ne résout pas la phrase mvnDebug dans la ligne de commande intégrée de maven. Je ne peux pas utiliser la ligne de commande cmd non plus parce que je ne trouve pas le chemin 'home' car maven est intégré dans intelliJ. J'ai essayé de configurer le débogage à distance avec intelli également, mais vous avez du mal à comprendre. Impossible également de trouver le plug-in Tomcat7 dans la fenêtre "Projets Maven". Mais je suis sûr que c'est le cas, puisque Tomcat7: la commande d'exécution lance le conteneur Tomcat et que l'application fonctionne.

9
Piotr Bartoch

Dans Intellij IDEA, dans l'onglet Maven Projects, creusez jusqu'à l'objectif Tomcat7:run, puis cliquez avec le bouton droit de la souris et sélectionnez Debug comme suit:

 enter image description here

Dans la partie précédente, notez qu’il existe un point d’arrêt sur la ligne 34 de HelloServlet.Java. Désormais, dès que vous entrez l'URL mappée sur le servlet ( http: // localhost: 9090/hello dans ce cas), le point d'arrêt est touché comme indiqué ci-dessous:

 enter image description here

Le code utilisé pour le vérifier se trouve dans le référentiel suivant: https://github.com/javacreed/how-to-run-embedded-Tomcat-with-maven

En ce qui concerne l'impossibilité de voir Plugins dans Maven Projects (désolé de l'avoir oublié), notez que Plugins n'est pas un nœud de niveau supérieur dans 'Maven Projects' .. mais se trouvera sous un nœud nommé tiré du <name> du projet. pom racine. Sur la base de ma propre expérience avec Intellij 2016.x et du fait que cette fonctionnalité est assez basique, je serais assez surpris qu'il s'agisse d'un bogue dans Intellij. Je suggérerais que cela soit un problème avec votre pom.xml ou une erreur d'utilisateur (frisson!).


Mise à jour - Plugins non visible dans Maven Projects

À partir du fichier pom.xml ( here ), le plug-in Tomcat7 se trouve dans la section build -> pluginManagement -> plugins. Cette section est destinée à être utilisée dans un pom racine (comme vous avez) pour centraliser la configuration du plug-in, qui peut ensuite être héritée par l'un des modules enfants en mentionnant simplement le plug-in. Mais sans cela, le plugin Tomcat7 ne sera disponible nulle part. Par conséquent, vous devez avoir une section build -> plugins -> plugin avec le plugin Tomcat7 maven quelque part (Voir également la question pertinente: Maven: Qu'est-ce que pluginManagement? )

Par exemple, la modification suivante ( ici correspond à la demande d'extraction correspondante pour votre référentiel):

    <plugins>
        <plugin>
            <groupId>org.Apache.Tomcat.maven</groupId>
            <artifactId>Tomcat7-maven-plugin</artifactId>
        </plugin>
    </plugins>

Ajouté à la section <build> de votre pom racine, la section Plugins, ainsi que les objectifs Tomcat7, apparaissent immédiatement dans Maven Projects:

 enter image description here

21
Ashutosh Jindal

vous pouvez exécuter Tomcat avec maven avec cette commande:

mvn Tomcat7:run

et si vous voulez déboguer, définissez les options suivantes:

export MAVEN_OPTS=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

si vous êtes dans Windows, utilisez la commande set:

set MAVEN_OPTS=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

alors vous pouvez déboguer avec Eclipse ou Intellij.

J'espère que cette aide. 

7
arganzheng

C’est une réponse tardive, mais je voudrais mettre en avant une autre solution plus conviviale qui utilise la même idée derrière la réponse de @arganzheng. Vous pouvez réellement ajouter des options de débogage dans le cadre de la configuration du plugin Tomcat maven. Le pom résultant ressemblerait à 

<plugins>
   <plugin>
      <groupId>org.Apache.Tomcat.maven</groupId>
      <artifactId>Tomcat7-maven-plugin</artifactId>
      <configuration>
         <systemProperties>
              <MAVEN_OPTS>-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000</MAVEN_OPTS>
         </systemProperties>
      </configuration>
   </plugin>
</plugins>
0
NAIT