我有一个带有注释处理器的 Maven 模块,它在从命令行编译期间工作得非常好。它使用
META-INF/services/javax.annotation.processing.Processor
注册注释处理器
默认的注释发现过程是使用
javax.annotation.processing.Processor
:
默认注释处理器发现过程是什么?
在 intelliJ IDEA 中我设置了以下选项:
从项目类路径获取处理器:如果出现以下情况,请启用此选项 您使用自定义注释处理器作为项目的一部分,或者如果 处理器存储在附加到所有 相应的模块作为库。
https://www.jetbrains.com/help/idea/annotation-processors-support.html
注释处理器检查注释方法的几个条件,包括该方法是静态的。
我可以使用注册了注释处理器的注释来注释方法,但似乎在 IntelliJ IDEA 中没有调用注释处理器:我可以从方法声明中删除
static
,并且我在IDE。
我找到了一些(可能已经过时的)解释:https://intellij-support.jetbrains.com/hc/en-us/community/posts/206232249-Annotation-Processor-define-in-Jar-not-automatically-Detected
问题:
META-INF/services/javax.annotation.processing.Processor
吗?Obtain processors from project classpath
? https://www.jetbrains.com/help/idea/annotation-processors-support.htmlMETA-INF/services/javax.annotation.processing.Processor
中注册的注释处理器?注意:当我写“我在 IDE 中没有看到任何错误”时,这意味着我在编辑器中没有看到错误,例如类似于当
@Override
下划线表示某个方法实际上并未覆盖超类中的方法时的情况。
当我从 IDE 构建模块时,我确实看到了错误。但是,我希望在编码过程中看到错误(类似于
@Override
),而不是在编译过程中。
IDEA 通过 Run Configurations 和 Maven Tool Window 提供内置 Maven 支持 - 如果您使用这些选项,您的项目应该与使用 Maven 完全一样构建。
IDEA 也有自己的构建系统(Build Menu),与 Maven 有点兼容,它也能够与
META-INF/services/javax.annotation.processing.Processor
一起工作。
Obtain processors from project classpath
选项的作用与它上面所说的完全一样 - IDEA 将在项目类路径中提供的 JAR 列表中查找注释处理器。
为了使注释处理器按预期工作:
META-INF/services/javax.annotation.processing.Processor
。