Maven / Gradle设置环境变量进行编译?

时间:2018-11-12 09:56:56

标签: java maven gradle annotation-processing

我开发了一个注释处理器,可以选择需要项目的artifactId来生成文件。我正在使用环境变量(GRAPHDEP_USAGE)来获取值。

我可以在启动Maven / Gradle之前从shell设置环境变量,但是我希望构建工具改为在编译之前为我设置环境变量:

  • 对于 Maven ,在启动{{1}之前,我想用pom.xml的内容填充环境变量GRAPHDEP_PROJECT。 }目标。
  • 对于 Gradle ,在启动任务{{1之前,我想在${artifactId}内用compile的内容填充环境变量build.gradle。 }}。

我尝试了几种选择,但都没有成功。知道我该怎么做吗?

1 个答案:

答案 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()声明支持的选项。