在 IntelliJ IDEA 中运行 Maven 模块的注释处理器

问题描述 投票:0回答:1

我有一个带有注释处理器的 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

问题:

  • IntelliJ 会自动检测
    META-INF/services/javax.annotation.processing.Processor
    吗?
  • 这到底是什么意思
    Obtain processors from project classpath
    https://www.jetbrains.com/help/idea/annotation-processors-support.html
  • 如何让 IntelliJ IDEA 检测到某些 Maven 模块的
    META-INF/services/javax.annotation.processing.Processor
    中注册的注释处理器?

注意:当我写“我在 IDE 中没有看到任何错误”时,这意味着我在编辑器中没有看到错误,例如类似于当

@Override
下划线表示某个方法实际上并未覆盖超类中的方法时的情况。

当我从 IDE 构建模块时,我确实看到了错误。但是,我希望在编码过程中看到错误(类似于

@Override
),而不是在编译过程中。

java maven intellij-idea annotations
1个回答
0
投票

IDEA 通过 Run ConfigurationsMaven 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
  • 配置文件应该以这样的方式配置,这将允许
    IDEA 找到它们(并将它们交给编译器)。
© www.soinside.com 2019 - 2024. All rights reserved.