如何调试一个智能的目标?

你能用 Intellij IDEA 调试一个 maven 目标吗?我知道我可以右键单击并运行 调试。但是,maven 插件没有出现在我的 外间图书馆列表中,所以我不能进入代码并设置断点。因此,像 快跑一样,调试不停地贯穿整个目标。

我使用的是 OS X 10.8和 IDEA 12.0.2。

编辑: 目标

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

108597 次浏览

我想通了:

  1. 在命令行中,用 mvnDebug代替 mvn运行 maven 目标
  2. 打开要在 intelliJ 中调试的 maven 插件的源代码,并设置一个 breakPoint
  3. 在 IDEA 中,添加 Remote JVM Debug配置。
    1. Under Settings, set Transport: Socket, Debugger Mode: Attach, Host: localhost, Port: 8000 (default port of mvnDebug).
  4. 在调试模式下运行配置。它应该连接到等待的 mvnDebug jvm。

由于您使用的是 Intellij,因此已经有一个内置的调试器,并且不需要使用命令行工具 mvnDebug。看看这个教程: 如何在 Intellij IDEA 调试 Maven 应用程序

本教程使用 MavenExecPlugin 并允许您调试应用程序,而无需使用命令行或 MvnDebug。我觉得在这里分享可能会有用。

很简单,我用的是《智慧的想法》15.0.4

  1. 在你的 Maven 插件中设置断点
  2. In the tag "Maven Projects" go to the project witch is using your maven plugin.
  3. In "Plugins" find your plugin and over the goal right click and Debug

下面是一个截图:

screenshot

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

老问题了,但我也有同样的需求我花了很长时间才让它起作用。希望能帮到别人。

用于测试调试:

mvn <goal> -Dmaven.surefire.debug

或者

mvn <goal> -Dmaven.failsafe.debug

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

如何配置:

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

- > 保存。

您可以引用 以上答案,也可以将这个插件添加到 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代替 mvnDebug运行 Maven 目标,例如 mvn spring-boot:run

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

在 IDEA 中作为 Debug 运行,无论何时您想要调试代码。

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

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

Where 8000 is a port number for remote debugging.

Maven goal configuration

然后使用端口8000创建新的 Remote 配置。

Remote debugging configuration

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

我不能让这些 MvnDebug的方式工作。

所以我尝试了另一种方法,add plugin source as IDEA module

Here is the detail step:

  1. 将插件源代码克隆为一个独立的项目。

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

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

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

不需要设置 Java Remote Debugger或类似的东西。就像在 官方文件中解释的那样,现在在 Maven的目标上,它只是一个字面上的 right click-> debug