如何调试Gradle插件

1,907 阅读2分钟

调试插件

1、创建配置

image.png

点击Edit Configurations,点击+号,然后点击Remote。

image.png

生成一个Remote Debug的配置,Name可以随意修改,但红框圈出来的地方不要修改。

image.png

2、创建调试环境

在工程的根目录下开启Gradle远程调试,如下所示:

export GRADLE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"

3、调试阶段

将需要调试的插件打上断点,然后在根目录下开始执行插件的任务,如下所示:

./gradlew task --no-daemon -Dorg.gradle.debug=true

这个时候会提示Listening for transport dt_socket at address: 5005,表示调试环境已经创建完成了。

image.png

下一步,我们需要点击debug的断点,开始进入调试。

image.png

4、结束调试

当调试结束后,我们需要关闭远程调试,即将GRADLE_OPTS置空。

export GRADLE_OPTS=""

调试第三方插件

第三方插件一般都没有源码,所以在开始上述的调试步骤之前,我们还需要将第三方插件的源码进行导入。第三方插件一般是在工程目录下的build.gradle脚本里面使用classpath进行声明,如下所示:

image.png

如果我们需要调试上述的插件,我们需要将classpath换成implementation,即:

implementation "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

将该依赖放置到需要调试的模块依赖下,sync同步后,再使用上面步骤开启调试。

在调试第三方插件时,发现没跑到断点任务就中断了,提示的错误信息与上面将插件的依赖导入有一定关联。这个时候可以将依赖注释掉,然后再开启调试,也不知道是不是有缓存的缘故,断点居然也能成功了。但是第二次就不生效了,暂时未想通是什么原因。

参考文档

1、Gradle插件开发系列之gradle插件调试方法

2、# 如何断点调试第三方 Gradle Plugin