Maven/Gradle 为编译设置环境变量?
Maven/Gradle set environment variable for compilation?
我开发了一个注释处理器,它可以选择需要项目的 artifactId
来生成文件。我正在使用环境变量 (GRAPHDEP_USAGE
) 来获取值。
我可以在启动前从shell设置环境变量Maven/Gradle,但我希望构建工具在编译前为我设置环境变量:
- 对于 Maven,在
pom.xml
中,我想在启动前用 ${artifactId}
的内容填充环境变量 GRAPHDEP_PROJECT
compile
目标。
- 对于Gradle,在
build.gradle
里面我想用[=19=的内容填充环境变量GRAPHDEP_PROJECT
], 启动任务前 compileJava
.
我试了几个选项都没有成功。知道我该怎么做吗?
不完全回答问题,但实际上回答了如何将参数传递给注释处理器的问题。
可以使用 -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()
。
我开发了一个注释处理器,它可以选择需要项目的 artifactId
来生成文件。我正在使用环境变量 (GRAPHDEP_USAGE
) 来获取值。
我可以在启动前从shell设置环境变量Maven/Gradle,但我希望构建工具在编译前为我设置环境变量:
- 对于 Maven,在
pom.xml
中,我想在启动前用${artifactId}
的内容填充环境变量GRAPHDEP_PROJECT
compile
目标。 - 对于Gradle,在
build.gradle
里面我想用[=19=的内容填充环境变量GRAPHDEP_PROJECT
], 启动任务前compileJava
.
我试了几个选项都没有成功。知道我该怎么做吗?
不完全回答问题,但实际上回答了如何将参数传递给注释处理器的问题。
可以使用 -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()
。