如何使用IntelliJ IDEA在调试模式下运行tomcat7-maven-plugin

时间:2016-11-20 11:51:51

标签: maven debugging intellij-idea tomcat7-maven-plugin

我的问题是我无法使用tomcat7-maven-plugin运行远程调试。 我用的是什么:

  • 的Maven
  • Tomcat7插件到maven
  • IntelliJ IDEA Ultimate 2016.2.2

Ofc Maven默认提供IntelliJ。我已经试过了 mvnDebug tomcat7:运行命令但是intelliJ并没有解决maven的内置命令行中的mvnDebug短语。不能使用cmd命令行,因为我无法找到“家”。路径,因为maven是内置的intelliJ。尝试使用intelli配置远程调试,但感到困惑。 也无法在" Maven Projects"中找到tomcat7插件。窗口。但是我确定它是,因为tomcat7:run命令启动tomcat容器和app工作。

3 个答案:

答案 0 :(得分:23)

在Intellij IDEA中,在Maven Projects标签中,深入查看tomcat7:run目标,然后右键单击并选择Debug,如下所示:

enter image description here

在abouve中,请注意HelloServlet.java第34行有一个断点。现在,只要您点击映射到servlet的URL(在这种情况下为http://localhost:9090/hello),断点就会被点击,如下所示:

enter image description here

用于测试此代码的代码位于以下存储库:https://github.com/javacreed/how-to-run-embedded-tomcat-with-maven

由于无法在Plugins中看到Maven Projects(抱歉,我错过了您已经提到过这一点),请注意Plugins不是'Maven Projects'中的顶级节点..但将位于从项目的根pom的<name>中取名的节点下。基于我自己对Intellij 2016.x的经验以及这个功能非常基本的事实,如果这是Intellij中的一个错误,我会感到非常惊讶。我建议这是你的pom.xml的问题或(颤抖!)用户错误。

更新 - PluginsMaven Projects

中无法显示

从pom.xml(here)开始,tomcat7插件位于build -> pluginManagement -> plugins部分。本节旨在用于根pom(如你所示)集中插件配置,然后只需提及插件即可由任何子模块继承。但是如果不这样做,tomcat7插件将无法在任何地方使用。因此,您必须在某处拥有tomcat7 maven插件的build -> plugins -> plugin部分(另请参阅相关问题:Maven: What is 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

答案 1 :(得分:7)

您可以使用此命令运行带有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进行调试。

希望这有帮助。

答案 2 :(得分:0)

这是一个较晚的答案,但我想强调另一种更为行家友好的解决方案,该解决方案在@arganzheng的背装背后使用相同的思想。实际上,您可以在tomcat maven插件配置中添加调试选项。生成的pom看起来像

<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>