IntelliJ IDEA 13 debugger don't stop on breakpoint in java for maven project

后端 未结 3 1908
野趣味
野趣味 2021-02-02 12:58

I have a breakpoint on a line where is the System.out.println(\"test\") command. I believe that the command is reached by execution because I see the printed string

3条回答
  •  一个人的身影
    2021-02-02 13:56

    My solution:

    Considering that you have a program that depends on system properties:

    package com.mycompany.app;
    
    
    public class App {
    
        private static final String GREETING = System.getProperty("greeting", "Hi");
    
        public static void main(String[] args) {
            int x = 10;
            System.out.println(GREETING);
        }
    }
    

    And you are running it with exec:exec:

    mvn exec:exec -Dexec.executable=java "-Dexec.args=-classpath %classpath -Dgreeting=\"Hello\" com.mycompany.app.App"
    

    With some "inception magic" we can debug the process started by Mavenexec:exec.

    Maven

    Change your exec:exec goal to enable remote debugging. I'm using suspend=y and server=n, but feel free to configure the JDWP Agent as you please:

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

    This will not be passed directly to the maven JVM, instead it will be passed to exec.args which will be used by exec:exec:

    mvn exec:exec -Dexec.executable=java "-Dexec.args=-classpath %classpath -agentlib:jdwp=transport=dt_socket,server=n,address=127.0.0.1:8000,suspend=y -Dgreeting=\"Hello\" com.mycompany.app.App"
    

    IntelliJ IDEA

    Create a Remote configuration (again I'm using a Listen strategy. You should adjust it according to your process settings):

    Now toggle your breakpoints and Debug your remote configuration. Using the settings above it will wait until your process starts:

    Finally run the exec:exec line above and debug your application at will:


    So basically you need two "Run/Debug" configurations for this to work:

    1. A Maven configuration for exec:exec with the system properties and JDWP agent configuration:

    2. The remote configuration acting as a client.

提交回复
热议问题