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