【问题标题】:Bazel and System Envirentmental VariableBazel 和系统环境变量
【发布时间】:2019-01-19 21:51:54
【问题描述】:

我正在用 bazel 构建我的 java 项目。我想在构建/运行时使用环境变量。根据documentation --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 都不起作用

我这里有什么问题吗?

【问题讨论】:

  • github.com/bazelbuild/intellij/issues 可能是一个更好的提问地方。插件开发人员可能需要像 IDE 中的许多其他配置一样,为运行配置提供环境变量选项。
  • @CrazyCoder 但我如何在 cli 上执行此操作。 bazel run myproject:app --action_env=APP_ENV=Development 不起作用

标签: java intellij-idea environment-variables bazel


【解决方案1】:

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

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

【讨论】:

  • 绝对是,要走的路!谢谢。
【解决方案2】:

从终端启动 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

【讨论】:

    【解决方案3】:

    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

    【讨论】:

      猜你喜欢
      • 2015-09-16
      • 2015-09-12
      • 2012-03-29
      • 2011-10-26
      • 2015-08-20
      • 2017-07-16
      • 1970-01-01
      • 2012-08-09
      相关资源
      最近更新 更多