如何使用IntelliJ IDEA在调试模式下运行tomcat7 maven插件
我的问题是我不能用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配置远程调
- 马文
- maven的Tomcat7插件
- IntelliJ IDEA Ultimate 2016.2.2
在“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>