【问题标题】:How to set agentlib property for mvn tomcat plugin (jpda)如何为 mvn tomcat 插件(jpda)设置 agentlib 属性
【发布时间】:2012-09-07 11:27:25
【问题描述】:

相关 eclipse debug remote web application => How do I debug a remote application in my eclipse

如何在 mvn tomcat 插件中设置/存档? http://tomcat.apache.org/maven-plugin-2.0-SNAPSHOT/tomcat7-maven-plugin/

唯一可能有帮助的是设置 systemProperty 但这对我不起作用;/

目标:让tomcat通过maven在console上运行,同时为不同的IDE开启远程调试

(是的,伙计们,我们可以在 Eclipse WTP 中运行 tomcat!这不是问题;)

【问题讨论】:

    标签: remote-debugging maven-tomcat-plugin jpda


    【解决方案1】:
    $ export MAVEN_OPTS=-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n
    $ mvn tomcat7:run-war
    

    ^^ 就是这样,不是很酷(因为它不在 POM 中)但它可以工作

    来源:http://aaronz-sakai.blogspot.de/2009/02/debugging-jetty-when-running-mvn.html

    【讨论】:

      【解决方案2】:

      这是一个有点旧的线程,但为了完整起见,我可能会在这里添加一点。

      出于某种奇怪的原因,该插件不提供调试选项配置。 因此,您唯一的选择是手动为运行该进程的 JVM 指定调试配置。 在您的环境中,可以通过三种方式实现此目的:

      1. 使用众所周知的 Maven 环境变量(如 childno.de 所述)
      2. 直接指定 maven 的选项(不需要环境变量):

        mvn -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y tomcat7:run-war

      3. 使用 eclipse 运行配置 这与 2 基本相同)但是您在 eclipse 中定义它(如果您根本不想离开 IDE,那会很好)。 为此,您需要指定 Maven Build Run 配置。 将目标设置为 tomcat7:run(或类似名称),然后导航到 JRE 选项卡。 VM arguments 区域是您指定调试配置的地方:-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y
      如果您选择 3),则 tomcat7 的精确运行目标与调试启用无关。根据您的用例(动态 Web 项目、战争等)进行选择。插件配置也是如此。但是,请确保在项目 pom 的 pluginManagement 部分中指定您使用的是 tomcat maven 插件:
      <pluginManagement>
         <plugins>
              <plugin>
              <groupId>org.apache.tomcat.maven</groupId>
              <artifactId>tomcat7-maven-plugin</artifactId>
              <version>2.1</version>
          </plugin>
          </plugins>
      </pluginManagement>
      

      【讨论】:

      • 我是否必须首先使用 JVM 参数配置上述 maven 运行,让它运行,然后再进行第二次调试配置以进行远程调试?我假设如果我更改了 HTTP 端口,那么 JVM 参数将是相同的吗?
      • 是的。您需要相应地设置远程调试客户端。从你的问题我推断它对你来说是日食,但原则上任何其他支持 JPDA 的客户端也有资格。这些是 Eclipse 远程调试配置的默认设置,因此它应该可以开箱即用。如果端口 8000 不可​​用,请确保在服务器 JVM 调试设置(-Xrunjwdp 选项的地址段)和客户端(eclipse 调试配置)中更改为另一个。为避免混淆,此端口用于远程调试协议,不涉及与 Tomcat 的 HTTP/S 通信。
      【解决方案3】:

      或者...您可以简单地将以下标签添加到您的插件配置中

       <jpda>true</jpda>
      

      然后当你执行:mvn tomcat7:run,它会在8000端口启动jpda。

      有趣的是,即使我已经对此进行了测试并且它可以工作,但我在开源代码库中找不到任何代码来解释它为什么工作,也没有找到任何改变默认端口 8000 的方法。

      在涉及到这个插件的文档时,Apache 似乎已经放弃了。

      【讨论】:

      • 这对我不起作用。我在插件的 2.2 版上。我还从 Apache 下载了源代码,并为“jpda”运行了一个不区分大小写的递归 grep,但没有返回任何内容。
      • 这不起作用,但添加 jdpa.listen=true 可以。看到这个stackoverflow.com/questions/2935375/debugging-in-maven
      猜你喜欢
      • 2015-09-24
      • 2012-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多