IDEA调试注解处理器AbstractProcessor

笔者试过很多网上介绍的方法,多种组合下,目前就此种方式是完全可行的,其他的方式或多或少的有部分问题,导致无法调试。

一、创建测试工程

1. module工程processer

    1. 1 pom.xml文件


    com.platform
    4.0.0
    processor
    1.0-SNAPSHOT

    
        
            com.google.auto.service
            auto-service
            1.0-rc2
        
    

  • 1.2 定义注解接口
@Retention(RetentionPolicy.SOURCE)
public @interface HelloWorld {
}
  • 1.3 定义注解AbstractProcessor实现
package com.platform;

import java.util.Set;
import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.Messager;
import javax.annotation.processing.ProcessingEnvironment;
import javax.annotation.processing.Processor;
import javax.annotation.processing.RoundEnvironment;
import javax.annotation.processing.SupportedAnnotationTypes;
import javax.annotation.processing.SupportedSourceVersion;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.Element;
import javax.lang.model.element.TypeElement;
import javax.tools.Diagnostic;

import com.google.auto.service.AutoService;

@SupportedAnnotationTypes("com.platform.HelloWorld")
@SupportedSourceVersion(SourceVersion.RELEASE_8)
@AutoService(Processor.class)
public class MyProcessor extends AbstractProcessor {
    Messager messager;

    @Override
    public synchronized void init(ProcessingEnvironment processingEnv) {
        super.init(processingEnv);
        messager = processingEnv.getMessager();
    }

    @Override
    public boolean process(Set annotations, RoundEnvironment roundEnv) {
        processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "Hello World 123!");
        return false;
    }
}

关于此处为什么使用@AutoService。因为笔者试过其他方式的生成注解,都无法实现使得断点触发。具体原因未知。

2. module工程test,用于测试注解

  • 2.1 pom.xml文件


    
        TestLmb
        com.demo
        1.0-SNAPSHOT
    

    4.0.0
    test
    jar
    
        
            com.platform
            processor
            1.0-SNAPSHOT
            compile
        
    

    
        
            
                maven-compiler-plugin
                3.7.0
                
                    1.8
                    1.8
                
            
        
    

3. 引导工程demo

  • 3.1 pom.xml文件定义


    4.0.0

    com.demo
    TestLmb
    pom
    1.0-SNAPSHOT

    
        processor
        start
    

配置工程

  • 2.1 增加编译配置


    image.png
  • 2.2 修改配置


    image.png
  • 2.3 命令行输入
mvnDebug clean package
  • 2.4 MyProcessor打断点


    image.png

至此整个调试完成。启动调试后可以断点到对应的代码处。

你可能感兴趣的:(IDEA调试注解处理器AbstractProcessor)