Mon problème est que je ne peux pas exécuter de débogage distant avec Tomcat7-maven-plugin . Ce que j'utilise:
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.
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:
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:
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!).
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
:
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.
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>