gradle plugin调试

假设我们这里是开发一个按照如下方式依赖的annotationProcessor

// app模块build.gradle
annotationProcessor project(":router-compiler")

调试该插件需要做两件事情

  • 以debug方式启动gradle task
  • 连接到debugger

调试模式启动gradle task

在终端中按照如下方式启动即可,正常情况下编译会停住,等待debugger连接

./gradlew assembleDebug -Dorg.gradle.daemon=false -Dorg.gradle.debug=true

此时可能会出现如下错误,提示端口被占用

Please read the following process output to find out more:
-----------------------
ERROR: transport error 202: bind failed: Address already in use
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [debugInit.c:750]

解决方式是结束占用端口的进程,同时可以停止其它在运行的gradle deamon以避免干扰

[wangxue@wangxue-mac] Router$ lsof -i:5005
COMMAND  PID    USER   FD   TYPE            DEVICE SIZE/OFF NODE NAME
java    4354 wangxue    4u  IPv4 0xc7ff8f48c51926d      0t0  TCP *:avt-profile-2 (LISTEN)
[wangxue@wangxue-mac] Router$ 
[wangxue@wangxue-mac] Router$ kill 4354
[wangxue@wangxue-mac] Router$ ./gradlew --stop
Stopping Daemon(s)
1 Daemon stopped

连接调试器

打开Edit Configurations窗口,添加remote类型配置
Edit Configurations
简单修改一下名称,同时可以选择Use module classpath为插件所在的模块,其它不用修改,点击OK保存。

选择配置为刚才新建的plugin,点击工具栏中的调试按钮即可连接调试器,之后gradle编译任务会继续运行,在插件代码中的断点也可以正常停住了。
连接到调试器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章