web-dev-qa-db-ja.com

IntelliJ IDEAでデバッグモードでTomcat7-maven-pluginを実行する方法

私の問題は、Tomcat7-maven-pluginでリモートデバッグを実行できないことです。私が使用するもの:

  • メイヴン
  • MavenへのTomcat7プラグイン
  • IntelliJ IDEA Ultimate 2016.2.2

Ofc MavenはデフォルトでIntelliJで提供されます。私はすでにmvnDebug Tomcat7:runコマンドを試しましたが、intelliJはmavenの組み込みコマンドラインのmvnDebugフレーズを解決しません。 Mavenは組み込みのIntelliJであるため、「ホーム」パスが見つからないため、cmdコマンドラインも使用できません。リモートデバッグもintelliで構成しようとしましたが、混乱しました。また、「Mavenプロジェクト」ウィンドウにTomcat7プラグインが見つかりません。しかし、Tomcat7:runコマンドがTomcatコンテナを起動し、アプリが動作するため、そうだと確信しています。

11
Piotr Bartoch

Intellij IDEAの[Maven Projects]タブで、Tomcat7:runゴールまで掘り下げてから、右クリックしてDebugを選択します。

enter image description here

上記では、HelloServlet.Javaの34行目にブレークポイントがあることに注意してください。これで、サーブレットにマップされたURL(この場合は http:// localhost:9090/hello )をヒットするとすぐに、ブレークポイントが以下のようにヒットします。

enter image description here

これをテストするために使用されるコードは、次のリポジトリにあります。 https://github.com/javacreed/how-to-run-embedded-Tomcat-with-maven

Maven ProjectsPluginsが表示されないことについて(これについて言及していなかったのでごめんなさい)、Pluginsは 'Maven Projects'の最上位ノードではないことに注意してください。ただし、プロジェクトのルートポンの<name>から取得した名前のノードの下にあります。 Intellij 2016.xでの私自身の経験と、この機能が非常に基本的であるという事実に基づいて、これがIntellijのバグである場合、私は非常に驚くでしょう。これは、pom.xmlに問題があるか、または(震え!)ユーザーエラーのいずれかであることをお勧めします。


更新-PluginsMaven 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に表示されます。

enter image description here

23
Ashutosh Jindal

次のコマンドを使用して、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でデバッグできます。

この助けを願っています。

8
arganzheng

これは遅い答えですが、@ 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>
0
NAIT