Maven中调试Annotation Processor
简述
临时写的记录,日后再补充完整;
不涉及处理器如何开发,如有需要可以参考ANNOTATION PROCESSING 101;
替代方案:用Gradle开发,比maven简单一些,安卓相关的apt教程泛滥;如有需要可以参考Debugging an Annotation Processor in your project
需求
- maven 项目
- 开发了编译时注解的注解处理器
- 需要调试注解处理器
问题
-
注解处理器能否和项目放一起
目前结论:不能,必须另外创建一个Maven项目写注解处理器再
mvn install到本地供其他项目使用 -
idea与maven远端调试
-
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如何关联处理器
这个花费了最多的时间,国内国外各种答案都没有解决,最后慢慢试出来的
-
maven-compiler-plugin配置下jdk版本
<plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> -
依赖里声明处理器
<dependencies> <!-- The annotation processor --> <dependency> <groupId>cn.rexih.java</groupId> <artifactId>test-anno-processor</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies>
-
idea -> settings -> Build,Execution,Deployment -> Complier -> Annotation Processors中enable即可,不用做其他事情
-
不须要参照其他文章去改pom中
execution、process之类的,越改越有问题
其他
- 在目标项目中如何打断点:
目标项目需要关联注解处理器源码,如果有source jar就下载source jar,没有的话选择源码;总而言之是在处理器的源码上打断点。
本文介绍了在Maven项目中调试Annotation Processor的方法,包括需求、问题及解决方案。通过idea的远程调试配置,使用`mvnDebug`命令启动,并在pom.xml中正确关联处理器。调试时,需要将处理器项目作为独立模块并在目标项目中关联处理器源码设置断点。
640

被折叠的 条评论
为什么被折叠?



