我开发了一个注释处理器,它可以选择需要项目的 artifactId
来生成文件。我正在使用环境变量 (GRAPHDEP_USAGE
) 来获取该值。
我可以在启动 Maven/Gradle 之前从 shell 设置环境变量,但我希望构建工具在编译之前为我设置环境变量:
- 对于 Maven,在
pom.xml
内,我想使用${ 的内容填充环境变量
,在启动GRAPHDEP_PROJECT
artifactId}compile
目标之前。 - 对于Gradle,在
build.gradle
内,我想用project的内容填充环境变量
,在启动任务GRAPHDEP_PROJECT
。 namecompileJava
之前。
我尝试了一些选项但没有成功。知道我该怎么做吗?
最佳答案
不完全回答问题,但实际上回答了背后的问题是如何将参数传递给注释处理器。
<小时/>编译器参数可以用 -A
指定标志。
在Gradle中:
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()
.
关于java - Maven/Gradle设置编译环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53259684/