如何 debug (调试) maven 插件?

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

在这里插入图片描述

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

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 管理项目下执行被替换后的命令即可。

执行完 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 这个类上打断点。

4、配置 Remote JVM Debug

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

整个过程如下

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

点击左上角的「+」
在这里插入图片描述

选择「Remote」

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

Name:Unnamed

Host:localhost

Port:5005

基于实际情况修改

# 你随意
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 插件的源代码。

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

当你看到

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

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

然后很快可以看到方法执行的流程进入到设定的断点处。
在这里插入图片描述
对,就是这样,有经验的同学会觉得很简单,对于新人来说还是有点门槛的。

最后

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

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

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值