IntelliJ 不选取生成的 .class 文件

Ste*_*uer 5 java compiler-construction intellij-idea maven annotation-processing

我已经实现了一个 AnnotationProcessor,它拾取带有字符串参数的类注释。字符串参数是特定于域的语言中的表达式,注释处理器将使用它来编译类文件。

我创建了一个小型测试项目来尝试一下。我看到的行为是这样的:

  1. 我可以使用maven成功构建项目
  2. 我可以从 intellij 中成功运行该项目
  3. 尽管项目在 intellij 中运行,但生成的类在编辑器中无法识别(“无法解析类 '...'”),并且 Intelli-sense 也不起作用。

我尝试查找问题并发现:

  • 正在生成的类文件正在 target/classes/package/name/KlassName.class 中创建(这是 Filer::createClassFile 方法选择的位置,但我希望它会转到某个单独的目录) 。

  • 如果我在注释处理期间创建一个java源文件(使用Filer::createSourceFile),intellij将没有问题。但是,我不能这样做,因为编译器是一个确实必须直接创建类的库。

我对解决方案可能是什么样子有两种猜测:

  1. 此问题可能源于 intellij 在编辑器窗口中进行类型检查时未查看目标/类内部。
  2. 类文件应该在单独的目录中生成。如果是这样,解决这个问题的设置是什么?

我使用intellij IDEA 2016.2.1和intellij IDEA 2017.2 EAP重现了这个问题。