因为无法忍受JAVA对于上层业务领域的某个特性的粗糙支持,开始从JAVA里找补救方法,兜兜转转来到了注解处理器的领地。
以前只是使用常规的JAVA注解来进行资源标记等元数据标记能力,对于基于注解处理器的高级用法,是比较抵触的,个人认为破坏和传染了研发环境的生态纯净度,绑架了依赖方。
但是目前遇到的这个问题,可能只有注解处理器能够比较优雅的解决了。先不管那么多了,搞定方案再说。
不再重复粘贴,直接链接一篇比较全面的文章:https://blog.csdn.net/u014454538/article/details/122531293
常见问题(1):报错【服务配置文件不正确】
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project log4sec-common: Compilation failure
[ERROR] 服务配置文件不正确, 或构造处理程序对象javax.annotation.processing.Processor: Provider cn.log4sec.exception.EnumPlugin not found时抛出异常错误
原因:这是因为注解处理器所在的模块也被注解处理器处理了,造成找不到注解处理器。
解决:在注解处理器所在的模块,增加pom配置,<compilerArgument>-proc:none</compilerArgument>
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> <compilerArgument>-proc:none</compilerArgument> </configuration> </plugin> </plugins> </build>
常见问题(2):如何单步调试自定义注解处理器
链接一篇干净有效的文章:https://blog.csdn.net/weixin_43547181/article/details/126624045
执行命令:mvnDebug clean package
观察输出信息中,调试端口
Preparing to execute Maven in debug mode
Listening for transport dt_socket at address: 8000
配置远程JVM调试,并启动,可见注解处理器的断点被命中。
好了,开始构建并调试自己的注解处理器吧。有动态调试在,总是可以又快又好的迅速理解相关蹩脚的概念和枯燥的理论。