使用 mvnDebug 进行远程调试,不会在断点处停止

mat*_*ash 6 debugging maven

受/sf/answers/1039757841/的启发,我尝试使用 mvnDebug 和 IntelliJ 远程调试 Maven 项目。但是,执行不会在我的断点处停止。重现一个简单的 Hello World 示例:

在本地机器上:

git clone https://github.com/LableOrg/java-maven-junit-helloworld.git
cd java-maven-junit-helloworld
mvnDebug test
Run Code Online (Sandbox Code Playgroud)

在远程机器上:

  1. 打开IntelliJ
  2. 从 Version Control->Git 中查看,设置 URL:https://github.com/LableOrg/java-maven-junit-helloworld.git,克隆
  3. 打开项目
  4. 打开 Hello.java,在显示的行处设置断点printer.println(HELLO);

  5. 运行->调试...->编辑配置...,添加新配置->远程

  6. 设置调试器模式:附加、传输:套接字、主机:、端口:8000
  7. 应用、调试

现在,测试将运行而不会在断点处停止。为什么?

小智 12

运行mvnDebug命令时,使用-DforkMode=never.

所以你的 Maven 命令将如下所示:

mvnDebug -DforkMode=never -Dmaven.surefire.debug clean install
Run Code Online (Sandbox Code Playgroud)

有关 的更多信息-DforkMode=never,请阅读此处


ams*_*ger 2

您需要将debugForkedModeof设置maven-surefire-plugin为 true

 <plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-surefire-plugin</artifactId>
   <version>${maven-surefire-plugin.version}</version>
   <configuration>
      <debugForkedProcess>true</debugForkedProcess>
   </configuration>
 </plugin>
Run Code Online (Sandbox Code Playgroud)

然后在端口 5005 上添加另一个远程调试配置。