Local debugging application launched on tomcat wit

2020-06-17 03:04发布

问题:

I am trying to enable debugging in my cargo configuration. I'm using cargo-maven2-plugin version 1.4.19 with the following configuration.

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

The application launches with this configuration but IntelliJ never connects to the JVM to enable debuging. How can I make IntelliJ connect to the JVM?

回答1:

I fixed this like this.

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

I used another port by changing the address like so.

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

I then created an IntelliJ run config for a remote by going to. Run > Edit Configurations > + > Remote I configured the remote to go to localhost and the port I had previously chosen <9009>.

After doing this I can start the cargo run and then start the debugger as a separate process to enable bugging.

If you want you can change the suspend argument to no like so.

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

Then the cargo build will start without running the debugger.



回答2:

For gradle 4.3.0, under the json path cargo>local add the below param,

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

and to start the app use,

./gradlew cargoRunLocal