我正在使用java注释处理器在编译时生成其他类.使用gradle构建时它工作正常,但我无法让IntelliJ识别生成的类.每当我尝试在IntelliJ中构建项目时,它会错误地说它找不到引用生成的类的符号.同样,因为它不知道类,所以在编写使用类的代码时没有给我任何帮助,只是将它全部突出显示为错误.
我有两个兄弟模块:"处理器"模块实现注释处理器并定义注释."demo"模块只是一些JUnit测试来试用注释处理器.我可以在IntelliJ中构建"处理器"模块,但是"演示"模块给出了如上所述的错误.我有"处理器"作为"演示"模块的依赖,在"测试"范围(我也尝试过"编译"范围).
如何让IntelliJ自动识别类?
我已经能够通过在设置对话框"标注处理程序"下创建新的配置,该配置文件下移动"演示"模块,可实现批注处理该配置文件,并指定注解处理器的FQCN得到它建在"注释处理器"列表框下.
但是,实时代码帮助仍然无效,编辑只是告诉我它找不到类,这实际上更重要(因为我总是可以从gradle构建).
在IntelliJ中,找到生成的代码所在的文件夹.这由设置注释处理的同一对话框中的设置控制.右键单击该文件夹,在上下文菜单中找到"Mark Directory As",然后选择"Generated Sources Root".
执行此操作后,IntelliJ将正常识别并处理生成的类.它还会给出一个编译警告,表明输出路径与源根相交,但这是合理可忽略的.我还没有找到一种方法来摆脱那个警告而不会让生成的类无法识别.