Bazel和系统环境变量

时间:2018-08-13 08:01:18

标签: java intellij-idea environment-variables bazel

我正在用bazel构建我的Java项目。我想在构建/运行时使用环境变量。根据{{​​3}} --action_env=APP_ENV=Development应该起作用。

所以我会bazel run myproject:app --action_env=APP_ENV=Development

但是System.getenv("APP_ENV");为空

在我的intellij IDE中,我有以下内容。 --action_env=APP_ENV=Development--action_env APP_ENV=Development都不起作用

documentation

我在这里弄错了吗?

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

class Main_Frame: def __init__(self, welk_window): self.top_Frame = tkinter.Frame(welk_window, width = "1", height = "1") self.top_Frame.pack() self.Button_start = tkinter.Button(top_Frame, text = "Start", fg ="green", command=self.startMessage) self.Button_start.pack(side=tkinter.LEFT) self.Button_quit = tkinter.Button(top_Frame, text = "Quit", fg ="red", command=self.top_Frame.quit) self.Button_quit.pack(side=tkinter.LEFT) def startMessage(self): print("Start") 仅影响构建中动作的环境,而不影响--action_env所调用目标的环境。在命令行上以常规方式设置环境变量应该起作用:run

答案 2 :(得分:0)

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

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

VAR1=VAL1
VAR2=VAL2

然后使用以下内容创建一个名为say 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

答案 3 :(得分:0)

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

--run_under='export VAR1=FOO VAR2=BAR && '
相关问题