本地调试应用程序在 tomcat 上启动,带有 IntelliJ 中的货物

Local debugging application launched on tomcat with cargo in IntelliJ

我正在尝试在我的货物配置中启用调试。我正在使用具有以下配置的 cargo-maven2-plugin 版本 1.4.19。

<plugins>
  <plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.4.19</version>
    <configuration>
      <container>
        <containerId>tomcat8x</containerId>
      </container>
      <configuration>
        <type>standalone</type>
        <properties>
        <cargo.servlet.port>8080</cargo.servlet.port>
        <cargo.jvmargs>
          -Xmx2048m
          -Xms512m
          -Xdebug
          -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=63342
          -Xnoagent
          -Djava.compiler=NONE
        </cargo.jvmargs>
      </properties>
    </configuration>
    <deployer>
    </deployer>
    <deployables>
      <deployable type="war" file="target/spa.war"></deployable>
      </deployables>
    </configuration>
  </plugin>

应用程序使用此配置启动,但 IntelliJ 从未连接到 JVM 以启用调试。如何让 IntelliJ 连接到 JVM?

我是这样解决的。

<plugins>
  <plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.4.19</version>
    <configuration>
      <container>
        <containerId>tomcat8x</containerId>
      </container>
      <configuration>
        <type>standalone</type>
        <properties>
        <cargo.servlet.port>8080</cargo.servlet.port>
        <cargo.jvmargs>
          -Xmx2048m
          -Xms512m
          -Xdebug
          -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9009
          -Xnoagent
          -Djava.compiler=NONE
        </cargo.jvmargs>
      </properties>
    </configuration>
    <deployer>
    </deployer>
    <deployables>
      <deployable type="war" file="target/spa.war"></deployable>
      </deployables>
    </configuration>
  </plugin>

我像这样更改地址使用了另一个端口。

-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9009

然后我通过转到为远程创建了一个 IntelliJ 运行 配置。 Run > Edit Configurations > + > Remote 我将遥控器配置为转到本地主机和我之前选择的端口 <9009>。

完成此操作后,我可以启动 cargo 运行,然后将调试器作为单独的进程启动以启用窃听。

如果您愿意,可以像这样将暂停参数更改为 no。

-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9009

然后 cargo 构建将在没有 运行 调试器的情况下开始。

对于 gradle 4.3.0,在 json 路径下 cargo>local 添加以下参数,

jvmArgs = "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000

并开始使用应用程序,

./gradlew cargoRunLocal