【发布时间】:2021-01-13 23:02:41
【问题描述】:
我正在尝试编写一个注释处理器来生成源文件,但不会覆盖在注释处理器之前运行期间生成的源文件。
因为我只是在学习,所以我创建了一个注释处理器,正如 Ryan Harter 在以下视频中所描述的那样:https://www.youtube.com/watch?v=IPlDL4EsY08。
我希望能够生成一次源文件,然后允许开发人员手动编辑它,而不必担心手动更改会被注释处理器的后续运行覆盖。这可能不是常态,但我可以想到几个证明有益的用例。
我希望修改的 AbstractProcessor 子类中的特定代码是:
try {
JavaFile file = JavaFile
.builder(builderType.packageName(), builder)
.build();
file.writeTo(filer);
} catch (IOException e) {
messager.printMessage(Diagnostic.Kind.ERROR, "Failed to write file for element", el);
}
现在,在我看来,每次我为我的 gradle 项目运行构建任务时,生成的源文件夹中的所有文件都会被删除。这意味着我在注释处理器中编写的任何用于检查给定生成源文件是否存在的代码将始终返回否定结果,即使生成的源文件在运行构建任务之前存在。每次使用注释处理器重新运行 javac 时,有什么方法可以防止生成的源文件夹被清除?还是有更好的方法来实现我想要实现的目标?
【问题讨论】:
标签: java