编译时debug(annotation processor) 给需要编译的Maven module 设置Run/Debug Configuration: 然后在Java编译器编译过程中更需要调用的源代码中像往常以前打上断点; 以一个编译器编译时会调用的javax.annotation.processing.Processor#process方法为例打上断点: 以Debug的方式启动刚才配置的MavenRun/Debug Configuration, 如下图所示, 编译时成功进入断点:
Working directory: 填写使用Processor的模块 Command line: maven命令,-X表示debug模式 开始调试 断点到我们的FactoryProcessor类中,点击IDEA的debug启动按钮 注意:调试前一定要先把processor模块打包
1.在maven项目 pom.xml 添加 <plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.0</version><configuration><annotationProcessors><annotationProcessor>com.eyu.MyProcessor</annotationProcessor></annotationProcessors><debug>true</debug><opti...
我们需要在 annotation-processor 模块中继承 AbstractProcessor 类来实现自己的处理类, 命名为 BuilderProcessor. ① 我们需要指定这个自定义处理类 “有能力” 处理的注解和支持的源码等级. 可以通过实现 Processor 接口提供的 getSupportedAnnotationTypes 和 getSupportedSourceVersion 或者通过注解 @SupportedAnnotationTypes...
APT(Annotation Processing Tool)正是这样一种工具,它能够在编译时扫描和处理注解,从而自动生成代码、配置文件等资源,极大地提高了开发效率和代码质量。 一、APT的基本概念 APT,全称Annotation Processing Tool,是JDK6引入的一个标准(JSR269),用于在编译时处理源代码中的注解。APT通过注解处理器(Annotation Processor)来...
@AutoService(Processor.class)@SupportedOptions("debug")publicclassAutoComponentProcessorextendsAbstractComponentProcessor{/** * 元素辅助类 */privateElements elementUtils;privateSet<String>componentClassNames=newConcurrentSkipListSet<>();@Overridepublicsynchronizedvoidinit(ProcessingEnvironment processingEnv){super.in...
18 <annotationProcessor>lombok.launch.AnnotationProcessorHider$ClaimingProcessor</annotationProcessor> 19 <annotationProcessor>你的注解处理器限定名称</annotationProcessor> 20 </annotationProcessors> 21 </configuration> 22 </plugin> 1. 2. 3. 4. ...
返回值表示这些注解是否由此 Processor 声明,如果返回 true,则这些注解已声明并且不要求后续 Processor 处理它们;如果返回 false,则这些注解未声明并且可能要求后续 Processor 处理它们。 核心方法介绍完后,我们通过示例来自定义一个注解处理器 @AutoService(Processor.class) @SupportedOptions("debug") public class Auto...
@ClassAnnotation(alias = "test") public class Test { @FieldAnnotation private String name; @MethodAnnotation(alias="debug") public String getName() { return name; } } 我们在class, field, method上分别运用我们的自定义注解,并且在method上开启debug日志 5. 处理自定义注解的逻辑 我们已经介绍了如何...
在左侧列表中选择"Remote JVM Debug"。 在右侧的"Port"(端口)字段中输入8000,因为终端提示已经监听8000端口。 应用更改并关闭配置窗口。 打断点并进行调试: 在IDEA中打开您想要调试的Java文件。 在"JavaCompiler"类的"compile"方法处设置一个断点。 在"AbstractProcessor"类的"init"方法和"MappingProcessor"类的"ini...