让 IntelliJ 识别由 AnnotationProcessor 生成的 类

Get IntelliJ to recognize classes generated by AnnotationProcessor

我正在使用 java 注释处理器在编译时生成额外的 classes。使用 gradle 构建时它工作正常,但我无法让 IntelliJ 识别生成的 classes。每当我尝试在 IntelliJ 中构建项目时,它都会出错,提示找不到引用生成的 class 的符号。同样,由于它不知道 classes,所以它在编写使用 classes 的代码时没有给我任何帮助,只是将其全部突出显示为错误。

我有两个兄弟模块:"processor" 模块实现注释处理器并定义注释。 "demo" 模块只是一些用于试用注释处理器的 JUnit 测试。我可以在 IntelliJ 中很好地构建 "processor" 模块,但是 "demo" 模块给我如上所述的错误。我有 "processor" 作为 "demo" 模块的依赖项,在 "Test" 范围内(我也尝试过 "Compile" 范围)。

如何让 IntelliJ 自动识别 classes?

更新

我已经能够通过在设置对话框中的 "Annotation Processors" 下创建一个新的配置文件来构建它,将 "demo" 模块移动到该配置文件下,为该配置文件启用注释处理,并在 "Annotation Processors" 列表框下指定注释处理器的 FQCN。

然而,实时代码帮助仍然不起作用,编辑器只是告诉我它找不到 class,这真的更重要(因为我总是可以从 gradle).

在 IntelliJ 中,找到生成的代码所在的文件夹。这由设置注释处理的同一对话框中的设置控制。右键单击该文件夹,在上下文菜单中找到 "Mark Directory As",然后选择 "Generated Sources Root"。

这样做之后,IntelliJ会正常识别和处理生成的类。它还会给出一个编译警告,指出输出路径与源根目录​​相交,但这是可以忽略的。我一直无法找到一种方法来消除该警告,同时又不让生成的 类 无法识别。

您可以继续 pom/gradle 文件并重新加载它,它将起作用。 示例:

pom.xml(right-click)-> Maven-> 重新加载