116

你能用 Intellij IDEA 调试一个 maven 目标吗?我知道我可以右键单击并运行Debug。但是,maven 插件没有出现在我的外部库列表中,所以我无法进入代码并设置断点。因此,Debug会像Run一样不停地运行目标。

我正在使用 OS X 10.8 和 IDEA 12.0.2。

编辑:目标

我已经为https://github.com/searls/jasmine-maven-plugin编写了自定义 specRunner - 但是,$specs$ 保持为空。所以我尝试查看实际加载了哪些文件。

4

9 回答 9

218

弄清楚了:

  1. 从命令行,使用mvnDebug而不是运行 maven 目标mvn。例如mvnDebug clean
  2. 在intelliJ中打开要调试的maven插件的源码并设置断点
  3. 在 IDEA 中,添加一个Remote JVM Debug配置。
    1. 在 Settings 下,设置 Transport: Socket, Debugger Mode: Attach, Host: localhost, Port: 8000 (mvnDebug的默认端口)。
  4. 在调试模式下运行配置。它应该连接到等待的 mvnDebug jvm。
于 2013-02-13T12:33:22.140 回答
48

好简单。我正在使用 Intellj Idea 15.0.4

  1. 在 Maven 插件中设置断点
  2. 在标签“Maven 项目”中,转到项目女巫正在使用您的 Maven 插件。
  3. 在“插件”中找到您的插件并在目标上右键单击并调试

这是一个屏幕截图:

截屏

于 2016-03-03T17:28:04.987 回答
23

老问题,但我也有同样的需求,我花了一段时间才让它发挥作用。希望可以帮助某人。

对于测试调试使用:

mvn <goal> -Dmaven.surefire.debug

或者

mvn <goal> -Dmaven.failsafe.debug

当执行停止并侦听地址 5005(默认)的套接字时,您将运行配置的远程调试器。

如何配置它:

运行 -> 编辑配置 -> 远程传输:socket 调试器模式:附加端口:5005(默认)

-> 保存。

于 2017-06-14T14:07:12.127 回答
14

仅在 IntelliJ 中调试 maven 目标的最简单方法是创建一个常规 maven 目标,并在运行器选项卡中传递这些 VM 选项:

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

其中 8000 是用于远程调试的端口号。

Maven目标配置

然后使用端口 8000 创建新的远程配置。运行 maven 目标后运行此配置。

远程调试配置

于 2018-05-14T12:59:29.127 回答
13

我认为最简单的解决方案是临时添加 maven 插件作为依赖项。完成此操作后,IntelliJ 将像对待任何其他依赖项一样处理它,您可以按通常的方式设置断点。

于 2017-01-05T12:50:18.950 回答
3

要么你可以参考上面的答案或者只是将此插件添加到 pom.xml

           <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
            <jvmArguments>
            -Xdebug - 
            Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
            </jvmArguments>
            </configuration>
        </plugin>

mvn并使用而不是运行 maven 目标mvnDebug。例如mvn spring-boot:run

在 IDEA 中,添加一个远程配置。在 Settings 下,设置 Transport: Socket, Debugger Mode: Attach, Host: localhost, Port: 8000 (mvnDebug的默认端口)。

每当您想调试代码时,在 IDEA 中作为 Debug 运行。

于 2018-04-06T09:13:51.663 回答
3

无需设置Java Remote Debugger或类似的东西。正如官方文档中所解释的那样,现在它实际上只是一个right click->目标。debugMaven

于 2021-01-15T20:21:32.110 回答
2

由于您正在使用 Intellij,因此那里已经有一个内置调试器,您不必一定使用命令行工具 mvnDebug。查看本教程:如何在 Intellij IDEA 中调试 Maven 应用程序

本教程使用 Maven Exec 插件,让您无需使用命令行或MvnDebug. 想在这里分享它可能是有价值的。

于 2014-02-08T11:37:57.803 回答
2

@Peter Szanto 的回答对我有用,但我不喜欢弄乱我的源代码。

我不能让这些MvnDebug方式奏效。

所以我尝试了另一种方式,将插件源添加为 IDEA 模块

这是详细步骤:

  1. 将插件源克隆为独立项目。

  2. 在您的项目中,转到File -> New -> Module from Exist Sources并添加您在步骤 1 中克隆的插件项目。

  3. 现在您可以打开插件源代码并设置一些断点。

  4. 以调试模式运行您的 Maven 目标,它应该在断点处停止。

于 2020-02-03T07:26:28.703 回答