当前位置: 首页 > 知识库问答 >
问题:

Maven/Gradle是否为编译设置环境变量?

束雅达
2023-03-14

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

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

  • 对于Maven,在pom.xml中,我希望在启动compile目标之前,用${artifactId}的内容填充环境变量graphdep_project
  • 对于Gradle,在build.Gradle中,我希望在启动任务CompileJava之前,用project.name的内容填充环境变量graphdep_project

我试了几个选项都没有成功。知道我怎么做吗?

共有1个答案

漆雕和雅
2023-03-14

不是完全回答了这个问题,而是实际上回答了后面的问题,即如何将参数传递给注释处理器。

可以使用-a标志指定编译器参数。

分级:

compileJava.options.compilerArgs += "-Agraphdep.project=${project.name}"
<compilerArgs>
  <arg>-Agraphdep.project=${project.artifactId}</arg>
</compilerArgs>
processingEnv.getOptions().get("widget");

支持的选项必须由处理器声明,可以使用批注@supportedoptions({“widget”})或重写方法public set getSupportedOptions()

 类似资料:
  • 因此,我在这里遵循这个演练,将Eclipse设置为mod Minecraft。当我运行时,它将一直运行到阶段,并失败,错误声明我的java_home类路径设置为1.8JRE。但是,我已经将其改为指向13.0 JDK。很明显,有一个地方我错过了它的阅读。我甚至尝试了这个stackoverflow问题中的解决方案,但仍然得到相同的错误。请看下图。 错误消息和变量 Edit2:原来前面的错误是由于使用了

  • 1.1. 编译环境配置 1.1.1. Openwrt编译环境搭建 1.1.2. 自带编译工具链环境搭建 1.1.3. MCU编译环境搭建 1.1. 编译环境配置 因为Kamino18平台采用MCU/ARM的异步架构,开发者需要安装arm和MCU交叉编译工具链。 1.1.1. Openwrt编译环境搭建 整个Kamino18平台的YODAOS是基于openwrt进行编译的,通过openwrt我们可以

  • 问题内容: 我正在使用以下maven pom.xml代码片段从文件jenkins / version.properties中读取名为BUILD_NUMBER的属性。 Jenkins还有一个名为$ BUILD_NUMBER的环境变量。我有尝试使用$ BUILD_NUMBER的子pom.xmls,它一直在为$ BUILD_NUMBER选取Jenkins环境变量值,而不是从jenkins / versi

  • 问题内容: 我想通过运行程序时设置环境变量。这可能吗? 我试图这样设置: 但是结果消息说FOO不存在。 问题答案: 您必须传递一个包含键 env 的选项对象,该键 env 的值本身就是键值对的对象。

  • 1. 编译前的准备 2. PHP编译前的config配置 3. Unix/Linux平台下的编译 4. 在Win32平台上编译PHP 5. 小结 到现在为止,你肯定应该在至少一种平台上安装过PHP,并用它来开发你的web程序了。你可能下载的win32平台下的iis或者apache对应的安装包,也可能使用了由第三方提供的linux、bsd等平台下的二进制包。而现在,则是我们动手自己编译PHP的时候了

  • ENV 设置环境变量 格式有两种: ENV <key> <value> ENV <key1>=<value1> <key2>=<value2>... 这个指令很简单,就是设置环境变量而已,无论是后面的其它指令,如 RUN,还是运行时的应用,都可以直接使用这里定义的环境变量。 ENV VERSION=1.0 DEBUG=on \ NAME="Happy Feet" 这个例子中演示了如何换行,以