用惯了 IntelliJ IDEA debug 功能,你知道如何在 IntelliJ IDEA 上调试 maven 插件吗?

maven插件拉取git文件 maven插件debug_intellij-idea

哈哈哈,那就是这篇文章准没错了。

1、准备源码

准备你想要进行 debug 的 maven 插件的源代码,我这里以 maven-enforcer-plugin 为例子

git@github.com:apache/maven-enforcer.git

# 基于 enforcer-3.1.0 tag 的源代码创建本地分支 v3.1.0
git checkout enforcer-3.1.0 -b v3.1.0

2、打开 maven 的 debug 模式

打开 maven 的 debug 模式很简单,你只需要把平时执行的 mvn 命令替换为 mvnDebug 命令即可触发。

mvnDebug clean compile org.apache.maven.plugins:maven-enforcer-plugin:3.1.0:enforce -Drules=org.apache.maven.plugins.enforcer.AlwaysPass

替换为

mvnDebug clean compile org.apache.maven.plugins:maven-enforcer-plugin:3.1.0:enforce -Drules=AlwaysPass

然后在另一个由 maven 管理项目下执行被替换后的命令即可。

maven插件拉取git文件 maven插件debug_maven插件拉取git文件_02

执行完 mvnDebug 命令后Terminal 窗口会有如下的提示信息

Preparing to execute Maven in debug mode
Listening for transport dt_socket at address: 8000

这个时候说明 maven 此时已经处于 debug 模式下了,它在 8000 这个端口上监听连接。

3、打断点

将 「1、准备源码」中准备的源代码导入 IntelliJ IDEA 中。

在你需要进行 debug 的 maven plugin 的源代码中打上断点

比如我要对 maven-enforcer 的 AlwaysPass 进行 Debug 来了解它的运行机制,就会在 AlwaysPass.class 这个类上打断点。

maven插件拉取git文件 maven插件debug_java_03

4、配置 Remote JVM Debug

在 IDEA 中为 maven-enforcer 源代码这个项目配置远程 Debug

整个过程如下

在工具栏里找到「Add Configuration…」的入口

maven插件拉取git文件 maven插件debug_maven_04


点击左上角的「+」

maven插件拉取git文件 maven插件debug_maven_05

选择「Remote」

maven插件拉取git文件 maven插件debug_intellij-idea_06

特别需要注意如下的配置,也就是上图中圈红的部分。

Name:Unnamed

Host:localhost

Port:5005

基于实际情况修改

maven插件拉取git文件 maven插件debug_apache_07

# 你随意
Name:debug-enforcer-rules
# 本地 debug ,填 localhost 或者 127.0.0.1
Host:localhost
# 这个必须要和「2、打开 maven 的 debug 模式」 中 maven debug 模式监听的端口一致
Port:8000

到这里你就做好了调试 maven 插件的全部准备工作。

5、开始调试(debug)

你只需要点击 IntelliJ IDEA 工具栏上的绿色的 bug 图标对应的按钮,即可开始调试 maven 插件的源代码。

maven插件拉取git文件 maven插件debug_maven插件拉取git文件_08


点击完 IntelliJ IDEA 工具栏上的绿色的 bug 图标对应的按钮后,可以观察 IntelliJ IDEA 的 Console 窗口

maven插件拉取git文件 maven插件debug_maven插件拉取git文件_09

当你看到

Connected to the target VM, address: ‘localhost:8000’, transport: ‘socket’。

这代表 debug 的客户端和服务端通信连接建立完成。

然后很快可以看到方法执行的流程进入到设定的断点处。

maven插件拉取git文件 maven插件debug_apache_10


对,就是这样,有经验的同学会觉得很简单,对于新人来说还是有点门槛的。

最后

前前后后也有过几次用 mvnDebug 来调试 maven 插件的经历了,有时候常常会忘记如何设置。

好记性不如烂笔头,今天就记录下吧,以备不时之需。

也希望能给你也带来帮助。