我开发了一个注释处理器,可以选择需要项目的artifactId
来生成文件。我正在使用环境变量(GRAPHDEP_USAGE
)来获取值。
我可以在启动Maven / Gradle之前从shell设置环境变量,但是我希望构建工具改为在编译之前为我设置环境变量:
pom.xml
的内容填充环境变量GRAPHDEP_PROJECT
。 }目标。${artifactId}
内用compile
的内容填充环境变量build.gradle
。 }}。我尝试了几种选择,但都没有成功。知道我该怎么做吗?
答案 0 :(得分:0)
不是完全回答问题,而是实际上回答了后面的问题,即如何将参数传递给注释处理器。
可以使用-A
标志指定编译器参数。
在成绩中:
compileJava.options.compilerArgs += "-Agraphdep.project=${project.name}"
在 Maven 中:
<compilerArgs>
<arg>-Agraphdep.project=${project.artifactId}</arg>
</compilerArgs>
然后从AbstractProcessor
的实现中,可以使用以下方法检索参数:
processingEnv.getOptions().get("widget");
处理器必须通过使用注释@SupportedOptions({"widget"})
或通过覆盖方法public Set<String> getSupportedOptions()
声明支持的选项。