爪哇:如何在注释处理器和另一个项目之间进行通信?
-
06-07-2019 - |
题
我有一个自己的 注释处理器 (我们称之为 MyProcessor) 和一个项目 (我们称之为“我的项目”) 通过通过 -processor
到 javac
.
现在我需要 MyProcessor 来生成一些输出并使其可用于 MyProject。
我有以下选择(和问题):
让 MyProcessor 将文件写入属性指定的路径
user.dir
.
问题: 从 MyProcessor 的角度来看,user.dir
始终是我的主目录,而不是 MyProject 的路径。使用以下命令将 MyProject 的当前目录传递给 MyProcessor
javac
的-A
选项。
问题: 这是一个丑陋的硬编码路径:/some/path/to/MyProject/
.让 MyProcessor 生成一些源文件,然后由
javac
与 MyProject 一起使用,以便 MyProject 可以引用这个已编译的类并从中检索数据。
问题: 对于如此简单的(?)任务来说,它太复杂了。还有哪些其他选择?
有人可以建议一下如何进行吗?
解决方案
Processor.init()
方法(您已经实现)被调用 加工环境 作为参数,反过来,它有一个 getFiler()
方法返回一个 锉刀 实例。
您应该使用 createResource()
的方法 Filer
(假设生成的输出既不是类也不是源;否则使用适当的 create
方法)并将输出写入 班级 或者 来源 位置(前者可能更好,但这取决于您在做什么)。如果需要的话,两者都可以通过命令行开关覆盖,但它们是明确定义的,因为它们将在构建过程中使用。
不隶属于 StackOverflow