Maven中调试Annotation Processor

Maven中调试Annotation Processor

文章目录

  • Maven中调试Annotation Processor
    • 简述
    • 需求
    • 问题
    • idea远端调试
      • mvnDebug
      • Remote调试器
    • pom如何关联处理器
    • 其他
    • 参考资料

简述

临时写的记录,日后再补充完整;

不涉及处理器如何开发,如有需要可以参考ANNOTATION PROCESSING 101;

替代方案:用Gradle开发,比maven简单一些,安卓相关的apt教程泛滥;如有需要可以参考Debugging an Annotation Processor in your project

需求

  1. maven 项目
  2. 开发了编译时注解的注解处理器
  3. 需要调试注解处理器

问题

  1. 注解处理器能否和项目放一起

    目前结论:不能,必须另外创建一个Maven项目写注解处理器再mvn install到本地供其他项目使用

  2. idea与maven远端调试

  3. pom如何关联处理器

idea远端调试

参见How to debug a Java Annotation Processor using IntelliJ & Maven,该文主要解决了idea如何设置远端调试

mvnDebug

调试maven项目使用的编译时注解,在Terminal中输入mvnDebug相关的指令,比如mvnDebug clean package

执行后会立刻挂起,等待调试器attach(可以想象成安卓开发者模式中的调试器)

Remote调试器

此时在idea的configuration中选中配置的Remote调试器并点击瓢虫按钮就会给mvnDebug挂起的任务attach调试器,任务即会开始执行

so上有一po较为完整的流程说明

Debug Java annotation processors using Intellij and Maven

[TODO]

pom如何关联处理器

这个花费了最多的时间,国内国外各种答案都没有解决,最后慢慢试出来的

  1. maven-compiler-plugin配置下jdk版本

    <plugin>
        <artifactId>maven-compiler-pluginartifactId>
        <version>3.7.0version>
        <configuration>
            <source>1.8source>
            <target>1.8target>
        configuration>
    plugin>
    
  2. 依赖里声明处理器

    <dependencies>
    	
        <dependency>
            <groupId>cn.rexih.javagroupId>
            <artifactId>test-anno-processorartifactId>
            <version>1.0-SNAPSHOTversion>
        dependency>
    dependencies>
    

  3. idea -> settings -> Build,Execution,Deployment -> Complier -> Annotation Processors中enable即可,不用做其他事情

  4. 不须要参照其他文章去改pom中executionprocess之类的,越改越有问题

其他

  1. 在目标项目中如何打断点:

目标项目需要关联注解处理器源码,如果有source jar就下载source jar,没有的话选择源码;总而言之是在处理器的源码上打断点。

参考资料

Idea远程调试(mvnDebug,Java命令)

自定义注解之编译时注解(RetentionPolicy.CLASS)(一)

你可能感兴趣的:(Misc)