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

如何使用IntelliJ IDEA在调试模式下运行tomcat7 maven插件,maven,debugging,intellij-idea,tomcat7-maven-plugin,Maven,Debugging,Intellij Idea,Tomcat7 Maven Plugin,我的问题是我不能用tomcat7 maven插件运行远程调试。 我使用的是: 马文 maven的Tomcat7插件 IntelliJ IDEA Ultimate 2016.2.2 默认情况下,Ofc Maven由IntelliJ提供。我已经试过了 mvnDebug tomcat7:run命令,但intelliJ没有在maven的内置命令行中解析mvnDebug短语。也不能使用cmd命令行,因为我找不到“home”路径,因为maven是内置的intelliJ。还尝试使用intelli配置远程调

我的问题是我不能用tomcat7 maven插件运行远程调试。 我使用的是:

  • 马文
  • maven的Tomcat7插件
  • IntelliJ IDEA Ultimate 2016.2.2
默认情况下,Ofc Maven由IntelliJ提供。我已经试过了 mvnDebug tomcat7:run命令,但intelliJ没有在maven的内置命令行中解析mvnDebug短语。也不能使用cmd命令行,因为我找不到“home”路径,因为maven是内置的intelliJ。还尝试使用intelli配置远程调试,但感到困惑。
在“Maven项目”窗口中也找不到tomcat7插件。但我确信是这样的,因为tomcat7:run命令启动了tomcat容器,应用程序也可以运行。

在Intellij IDEA中,在
Maven项目
选项卡中,深入到
tomcat7:run
目标,然后右键单击并选择
Debug
,如下所示:

在abouve中,请注意,
HelloServlet.java
的第34行有一个断点。现在,只要点击映射到servlet的URL(在本例中),就会点击断点,如下所示:

用于测试这一点的代码位于以下存储库中:


关于无法在
Maven项目中查看
插件
(很抱歉,我没有听到您提到这一点),请注意
插件
不是“Maven项目”中的顶级节点。。但将位于名为取自项目根pom的
的节点下。根据我自己使用Intellij 2016.x的经验,以及这个功能非常基本的事实,如果这是Intellij中的一个bug,我会非常惊讶。我认为这要么是pom.xml的问题,要么是用户的错误(不寒而栗)


更新-
插件
Maven项目中不可见
在pom.xml()中,tomcat7插件位于
build->pluginManagement->plugins
部分。本节旨在在根pom中使用(如您所拥有的)来集中插件配置,然后通过提及插件,任何子模块都可以继承插件配置。但如果不这样做,tomcat7插件将无法在任何地方使用。因此,您必须在某个地方有一个带有tomcat7 maven插件的
build->plugins->plugin
部分(另请参见相关问题:)

例如,以下更改(是您回购的相应拉动请求):


org.apache.tomcat.maven

您可以使用以下命令使用maven运行tomcat:

mvn tomcat7:运行

如果要调试,请设置以下maven选项:

export-MAVEN\u OPTS=-Xrunjdwp:transport=dt\u socket,server=y,suspend=n,address=8000

如果您在windows中,请使用set命令:

set-MAVEN\u OPTS=-Xrunjdwp:transport=dt\u socket,server=y,suspend=n,address=8000

然后可以使用Eclipse或Intellij进行调试


希望这有帮助

这是一个迟来的答案,但我想强调另一个更专业的解决方案,它使用了@arganzheng的answear背后的相同思想。实际上,您可以添加调试选项作为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>

org.apache.tomcat.maven
tomcat7 maven插件
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

不幸的是,如上所述,“Maven项目”选项卡中没有tomcat7插件。。。也许你知道怎么继续?我添加了带有pom文件的插件,它可以很好地用于部署目的,仅适用于“tomcat7:run”…更新:我已经这样做了。在命令行中,设置MAVEN_DEBUG_OPTS=“-Xdebug-Xnoagent-Djava.compiler=NONE-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000”,并配置intelliJ run/DEBUG->edit configurations->remote->host:localhost port:8000。当我开始调试时,我得到了这样的信息:“运行tomcat-7-debug时出错:无法打开调试器端口(localhost:8000):java.net.ConnectException”连接被拒绝:connect“我认为这里的主要问题是你看不到
插件。当您在Intellij中对插件目标进行
Debug
调试时,您不需要做任何其他事情(即不需要设置MAVEN\u Debug\u OPTS等)。我已经要求提供更多信息来解决不可见的
插件问题。非常感谢!你救了我!关于无法查看插件部分,您在
Maven项目中的项目节点下看到了什么?你能上传Maven项目的快照吗(或者嵌入到你的问题中,或者如果你还没有上传图片的权限,那么请上传到imgur或其他地方,并在这里发布链接)?还值得将您的
部分与我的答案中链接的存储库中的部分进行比较吗?是来自该回购协议的pom。您的
部分的片段也会很有用。Maven设置和项目的屏幕选项卡:这里是来自父pom文件的片段,每个模块中的插件部分没有tomcat7。这里有一个项目链接:完美!让我看看这个项目。这对我不起作用。在项目的.mvn文件夹中创建一个jvm.config文件并添加-agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n工作正常。(间距不正确,以-符号开始)完成此操作并重新加载pom后,Maven项目选项卡上的调试选项将启用。非常好,谢谢。lkamal-什么是“这”以及“完成”是什么意思?
<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>