【问题标题】:Annotation processor only processing a modified class after first run注释处理器仅在首次运行后处理修改的类
【发布时间】:2013-08-04 00:06:48
【问题描述】:

我正在开发一个注释处理器。

当处理器项目被编译为 .jar 时,处理发生在我的第二个项目的所有使用处理器的类上(当我在 Eclipse 上使用 Project->Clean... 时也会发生)。但是当我更改一个类并保存它时,在我的第二个项目中,处理只发生在这个类中。

问题是我的处理器必须获取所有类的根元素,但是,当它只在一个类中运行时,它只能获取该类的根元素。

关于如何获取项目的所有根元素的任何想法?

【问题讨论】:

  • 你是只在eclipse下使用处理器,还是在构建中也使用?
  • 我认为它只在 Eclipse 下运行。我不知道其他方式。它是在 Eclipse 中的 Properties->Java Compiler->Annotation Processing 中配置的。
  • Eclipse 执行增量编译,这使得批量注释处理更加困难。我知道有些项目会保留一个已知根的文件,并在注释处理期间将其用作处理所有根的输入。就个人而言,我更喜欢在 IDE 之外运行 mvn clean install 或类似的构建来处理注释。
  • 我想我可以将修改后的类存储在一个静态变量中,这样我就可以随时访问它们。但是如何处理班级搬迁。有没有办法知道一个类是否从项目中删除?我对 mvn install os 类似的了解不多。你能给我一个参考吗?

标签: java eclipse class annotation-processing


【解决方案1】:

我知道,这是一个老问题,但我现在偶然发现了这个问题,我也找到了解决方案。在eclipse中(我用的是Mars),右键project -> properties -> JavaCompiler -> Annotation Processing -> Factory Path -> Advanced... -> Run this container's processor in batch mode

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    相关资源
    最近更新 更多