我正在编写自定义 AnnotationProcessor 并且需要访问在执行期间设置为 javac 的选项:例如-详细,-s,-d
正确的做法是什么?我不认为解析“sun.java.command”系统属性或访问 com.sun.tools.javac.util.Options 是执行此操作的好方法。
非常感谢。
PS:-s 选项可能是这样的:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null);
Iterable<? extends File> locations = fm.getLocation(StandardLocation.SOURCE_OUTPUT);
最佳答案
没有公共(public) API 可以执行此操作。 “-s”和“-d”选项的效果应该反射(reflect)在文件管理器的行为中,而不是处理器需要直接检查的东西。
可以使用“-Afoo=bar”传递特定于处理器的选项,这可以从 getOptions 方法中查询。
关于java - 在 AnnotationProcessor 中访问 javac 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13178735/