Bazel和系统环境变量

10
我正在使用Bazel构建我的Java项目。我想在构建/运行时使用环境变量。根据文档--action_env=APP_ENV=Development应该可以工作。
所以我执行bazel run myproject:app --action_env=APP_ENV=Development 但是System.getenv("APP_ENV");返回null。
在我的IntelliJ IDE中,我尝试了以下两种方式:--action_env=APP_ENV=Development--action_env APP_ENV=Development,但都没有生效。

Using IntelliJ

这里有什么地方我弄错了吗?

https://github.com/bazelbuild/intellij/issues 可能是一个更好的询问地点。插件开发者可能需要像IDE中许多其他配置一样提供运行配置的环境变量选项。 - CrazyCoder
@CrazyCoder 但是我该如何在命令行中执行呢?bazel run myproject:app --action_env=APP_ENV=Development无法工作。 - flexxxit
3个回答

14

您可以使用--run_under来为Bazel运行命令添加前缀。这可以在IntelliJ的Run/Debug配置中用于设置环境变量。

--run_under='export VAR1=FOO VAR2=BAR && '

绝对是正确的选择!谢谢。 - Marcelus Trojahn
1
它只在运行模式下工作,但在调试模式下不起作用。不确定为什么。 - Jianwu Chen

1

从终端启动Intellij,这样它就拥有了在bazel同步(构建)和bazel运行期间所需的环境变量。

在MacOS上,使用open命令启动它。

$ export POSTGRES_USER=dev_user
$ open -a "IntelliJ IDEA CE"
$

Bazel 只会在您通过命令行提供变量时将其传递给构建进程:
$ bazel build --action_env=POSTGRES_USER //...

或者在.bazelrc文件中指定它们:

build --action_env=POSTGRES_USER

0

Intellij bazel插件的当前版本允许您指定bazel二进制文件。您可以利用此功能,为每个运行配置添加特定的环境变量。

假设您想要将以下内容添加到运行时环境中:

VAR1=VAL1
VAR2=VAL2

然后创建一个名为bazel_custom的文件,并包含以下内容(将/path/to/bazel替换为正确的bazel路径):

#!/usr/bin/env bash

export VAR1=VAL1
export VAR2=VAL2

/path/to/bazel "$@"

保存文件并将其标记为可执行文件: chmod +x bazel_custom 然后编辑您的Intellij bazel运行配置,并将路径设置为特定任务的bazel二进制文件的路径为/path/to/bazel_custom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接