java - Maven/Gradle设置编译环境变量?

标签 java maven gradle annotation-processing

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

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

  • 对于 Maven,在 pom.xml 内,我想使用 ${ 的内容填充环境变量 GRAPHDEP_PROJECT artifactId},在启动compile目标之前。
  • 对于Gradle,在build.gradle内,我想用project的内容填充环境变量GRAPHDEP_PROJECT。 name,在启动任务 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() .

关于java - Maven/Gradle设置编译环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53259684/

相关文章:

java - 检测到 JDK 版本 : 11. 0.8 不在允许范围内 [1.8.0-101,1.8.9999]

java - 在类路径上发现多个绑定(bind) & 在类路径上检测到 log4j-over-slf4j.jar 和 slf4j-log4j12.jar

android - 如何使用 Gradle 创建发布签名的 apk 文件?

java - 验证txt文件

java - 从数据库表中将值添加到 JTable 中

java - 是否可以检测到焦点丢失在 jSpinner 的按钮上

java - 为什么struts2-junit插件提示约定插件?

java - 将RSS feed写入MySQL

java - 最好使用 Maven 程序集插件创建 zip 原型(prototype)(从project.basedir 或project.build.directory 开始)?

android - ./Gradlew Build 需要 2 小时 40 分钟 - 是否有改进的余地?