私の問題は、Tomcat7-maven-pluginでリモートデバッグを実行できないことです。私が使用するもの:
Ofc MavenはデフォルトでIntelliJで提供されます。私はすでにmvnDebug Tomcat7:runコマンドを試しましたが、intelliJはmavenの組み込みコマンドラインのmvnDebugフレーズを解決しません。 Mavenは組み込みのIntelliJであるため、「ホーム」パスが見つからないため、cmdコマンドラインも使用できません。リモートデバッグもintelliで構成しようとしましたが、混乱しました。また、「Mavenプロジェクト」ウィンドウにTomcat7プラグインが見つかりません。しかし、Tomcat7:runコマンドがTomcatコンテナを起動し、アプリが動作するため、そうだと確信しています。
Intellij IDEAの[Maven Projects
]タブで、Tomcat7:run
ゴールまで掘り下げてから、右クリックしてDebug
を選択します。
上記では、HelloServlet.Java
の34行目にブレークポイントがあることに注意してください。これで、サーブレットにマップされたURL(この場合は http:// localhost:9090/hello )をヒットするとすぐに、ブレークポイントが以下のようにヒットします。
これをテストするために使用されるコードは、次のリポジトリにあります。 https://github.com/javacreed/how-to-run-embedded-Tomcat-with-maven
Maven Projects
にPlugins
が表示されないことについて(これについて言及していなかったのでごめんなさい)、Plugins
は 'Maven Projects'の最上位ノードではないことに注意してください。ただし、プロジェクトのルートポンの<name>
から取得した名前のノードの下にあります。 Intellij 2016.xでの私自身の経験と、この機能が非常に基本的であるという事実に基づいて、これがIntellijのバグである場合、私は非常に驚くでしょう。これは、pom.xmlに問題があるか、または(震え!)ユーザーエラーのいずれかであることをお勧めします。
Plugins
はMaven Projects
に表示されませんPom.xml( here )から、Tomcat7プラグインはbuild -> pluginManagement -> plugins
セクションにあります。このセクションは、(必要に応じて)ルートpomで使用してプラグイン構成を集中化することを意図しており、プラグインに言及するだけで任意の子モジュールに継承できます。しかし、そうしないと、Tomcat7プラグインはどこでも利用できなくなります。したがって、Tomcat7 mavenプラグインを含むbuild -> plugins -> plugin
セクションが必要です(関連する質問も参照してください: Maven:pluginManagement? )
たとえば、次の変更( here は、リポジトリに対応するプルリクエストです):
<plugins>
<plugin>
<groupId>org.Apache.Tomcat.maven</groupId>
<artifactId>Tomcat7-maven-plugin</artifactId>
</plugin>
</plugins>
ルートpomの<build>
セクションに追加すると、すぐにプラグインセクションになり、Tomcat7の目標とともにMaven Projects
に表示されます。
次のコマンドを使用して、mavenでTomcatを実行できます。
mvn Tomcat7:run
デバッグする場合は、次のmavenオプションを設定します。
export MAVEN_OPTS=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
windowsを使用している場合は、setコマンドを使用します。
set MAVEN_OPTS=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
その後、EclipseまたはIntellijでデバッグできます。
この助けを願っています。
これは遅い答えですが、@ arganzhengの嫌悪感の背後にある同じアイデアを使用する他のよりMavenフレンドリーなソリューションを強調したいと思います。 Tomcat mavenプラグイン構成の一部として、実際にデバッグオプションを追加できます。結果のポンは次のようになります
<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>