自定义注解处理器debug调试的配置

环境

MacBook Pro
Java:1.8+

前言

上篇已经讲解了如何写个简单的自定义注解,但是开发,肯定需要打断点调试的。
编译阶段该如何启动断点呢?

设置守护进程

方法一:在gradle家目录中的gradle.properties进行配置

找到gradle家目录:
我的:

/Users/yutao/.gradle
yutaodeMacBook-Pro:.gradle yutao$ pwd
/Users/yutao/.gradle
yutaodeMacBook-Pro:.gradle yutao$ ll
total 32
drwxr-xr-x  11 yutao  staff    352  4 13 10:26 caches
drwxr-xr-x   6 yutao  staff    192  3 23 14:19 daemon
-rw-r--r--   1 yutao  staff    155  5 11 18:39 gradle.properties
drwxr-xr-x   6 yutao  staff    192 12 20 18:47 native
drwxr-xr-x   5 yutao  staff    160  5  7 15:38 notifications
-rw-r--r--@  1 yutao  staff  11496 12  9 16:47 settings.xml
drwxr-xr-x   2 yutao  staff     64 11  4  2019 workers
drwxr-xr-x   3 yutao  staff     96 11  4  2019 wrapper

可以看到有个gradle.properties文件,如果没有,就创建一个;

在文件后面添加:

org.gradle.daemon=true
org.gradle.jvmargs=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

=-=-=-=-=-=-=-=-=-=-=-=2020年0512日-=-=-=-=-=-=-=-=-=-=
回到公司的项目里刷新依赖时,即点击gradle中刷新按钮时,报错了:

Unable to start the daemon process.
This problem might be caused by incorrect configuration of the daemon.
For example, an unrecognized jvm option is used.
Please refer to the user guide chapter on the daemon at https://docs.gradle.org/4.6/userguide/gradle_daemon.html
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]

-----------------------
Check the JVM arguments defined for the gradle process in:
 - gradle.properties in project root directory
 - gradle.properties in in GRADLE_USER_HOME directory

然后注释掉上面的配置就OK了;
所以目前建议,采用方法二,写到项目里的gradle.properties文件中。

方法二:在项目中的gradle.properties进行配置

没有就新建一个

自定义注解处理器debug调试的配置_第1张图片

启动守护线程

./gradlew --stop
./gradlew --daemon

执行结果:

yutaodeMacBook-Pro:processor yutao$ ./gradlew --stop
Stopping Daemon(s)
2 Daemons stopped
yutaodeMacBook-Pro:processor yutao$ ./gradlew --daemon
Starting a Gradle Daemon, 5 stopped Daemons could not be reused, use --status for details

> Task :help

Welcome to Gradle 5.2.1.

To run a build, run gradlew <task> ...

To see a list of available tasks, run gradlew tasks

To see a list of command-line options, run gradlew --help

To see more detail about a task, run gradlew help --task <task>

For troubleshooting, visit https://help.gradle.org

BUILD SUCCESSFUL in 4s
1 actionable task: 1 executed
yutaodeMacBook-Pro:processor yutao$ 

这一步网上很多是这样的:
./gradlew --no-daemon -Dorg.gradle.debug=true :app:clean :app:compileDebugJavaWithJavac
上面这道命令是针对Android项目的,我不是搞Android开发,所以我创建的项目仅仅只是普通的Java项目。
因此我的项目的gradle任务里面没有:compileDebugJavaWithJavac这道任务。

创建注解调试服务

Run - Edit configurations - 点击 左上角 + — 选择 Remote
自定义注解处理器debug调试的配置_第2张图片

启动注解调试服务

自定义注解处理器debug调试的配置_第3张图片

启动后控制台会打印:

Connected to the target VM, address: 'localhost:5005', transport: 'socket'

表示成功。

执行编译任务看是否进入断点

我们有如下断点:
自定义注解处理器debug调试的配置_第4张图片
执行:

自定义注解处理器debug调试的配置_第5张图片
或者敲命令:

yutaodeMacBook-Pro:processor yutao$ ./gradlew compileJava

你会发现,好像没有进入断点。

那是因为文件已经编译过了,需要对文件进行修改,不然编译器发现文件依然是之前的文件,就不编译了。

修改后,再次执行编译命令:

自定义注解处理器debug调试的配置_第6张图片
OK,成功了。

注意说明:

网上这一步很多是这样的:

./gradlew clean assembleDebug
# 或者
./gradlew assembleDebug

利用assembleDebug 这个任务task,来进行编译项目。这个任务其实是打包任务。
但是我的项目里是没有这个任务的,原有上面也说过,我不是Android项目。
所以配置上就没有引入这个任务。只有assemble这个任务。
但是既然是编译,也没必要执行assemble这种打包任务,执行编译compileJava任务就好了。

参考地址:

注解解释器 annotationProcessor 断点调试

Java注解知识梳理—自定义注解处理器

如何debug自定义AbstractProcessor

你可能感兴趣的:(Java)