自定义注解处理器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进行配置

没有就新建一个

在这里插入图片描述

启动守护线程

./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
在这里插入图片描述

启动注解调试服务

在这里插入图片描述

启动后控制台会打印:

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

表示成功。

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

我们有如下断点:
在这里插入图片描述
执行:

在这里插入图片描述
或者敲命令:

yutaodeMacBook-Pro:processor yutao$ ./gradlew compileJava

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

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

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

在这里插入图片描述
OK,成功了。

注意说明:

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

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

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

参考地址:

注解解释器 annotationProcessor 断点调试

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

如何debug自定义AbstractProcessor

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Spring Boot是一个用于构建独立的、生产级别的Spring应用程序的框架。它提供了许多便捷的功能和特性,其包括自定义注解配置。 在Spring Boot,我们可以通过自定义注解来实现一些特定的配置。下面是一个简单的示例来介绍如何自定义注解配置: 1. 首先,创建一个自定义注解类,使用`@interface`关键字来定义注解。例如,我们创建一个名为`@CustomAnnotation`的注解: ```java import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface CustomAnnotation { String value() default ""; } ``` 2. 在需要使用该注解的类上添加注解。例如,我们创建一个名为`CustomClass`的类,并在类上添加`@CustomAnnotation`注解: ```java @CustomAnnotation("customValue") public class CustomClass { // 类的具体实现 } ``` 3. 在Spring Boot的配置,使用`@ComponentScan`注解来扫描带有自定义注解的类,并进行相应的配置。例如: ```java @SpringBootApplication @ComponentScan(basePackages = "com.example") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 4. 在需要使用自定义注解的地方,可以通过反射获取注解的值,并进行相应的处理。例如,在某个Service类使用自定义注解: ```java @Service public class CustomService { @Autowired private ApplicationContext applicationContext; public void processCustomAnnotation() { Map<String, Object> customBeans = applicationContext.getBeansWithAnnotation(CustomAnnotation.class); for (Object bean : customBeans.values()) { CustomAnnotation customAnnotation = bean.getClass().getAnnotation(CustomAnnotation.class); String value = customAnnotation.value(); // 处理自定义注解的逻辑 } } } ``` 这样,我们就可以通过自定义注解来实现一些特定的配置。在上述示例,我们通过自定义注解`@CustomAnnotation`来标记需要进行特定处理的类,并在`CustomService`通过反射获取带有该注解的类,并进行相应的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山鬼谣me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值