Java注释处理intellij需要编译两次

时间:2014-11-20 16:57:25

标签: java intellij-idea annotation-processing

我正在开发一个注释处理器来生成一些代码,但我有一些编译问题。

我希望能够在触发生成的带注释的接口所在的同一模块中使用生成的类。

虽然我认为在编译其他源之前应该运行注释处理,但这在删除所有生成的源之后的第一次编译时不起作用。 因此,对生成的源的引用会在第一次运行时生成错误,说明生成的包不存在。 在第二次运行时,一切都编译好,但我怀疑使用上一次运行的生成源,而不是新生成的源。

我可能错过了一些配置这个的机制吗?或者这是预期的行为?

1 个答案:

答案 0 :(得分:2)

此问题及其解决方案如下所述:https://code.google.com/p/acris/wiki/CodeGenerationPlatform_Pitfall_Rounds

关键是用

包装代码生成
if (!roundEnv.processingOver()) { ... }

避免在上一轮编译器中更改生成的文件。