SBT env变量来自哪里?

Ila*_*sta 7 scala environment-variables sbt

我正在使用Scala(2.12.7)和SBT(1.2.7)迈出第一步.在某些时候,我想从环境中获得秘密价值:

sys.env("SECRET_TOKEN")
Run Code Online (Sandbox Code Playgroud)

问题是,在sbt shell中,SECRET_TOKEN没有定义,因此应用程序崩溃.

所以:

$ export SECRET_TOKEN="xxx"
$ sbt
[... sbt loads]
sbt> run
[ crashes because of the env var not found ]
Run Code Online (Sandbox Code Playgroud)

这就像sbt shell只能获得当前环境的一个子集.

我错过了什么吗?

谢谢

Eug*_*ota 3

sbt(脚本+启动器)只是启动一个奇特的java进程,它应该从父进程继承环境变量。

给定

$ export SECRET_TOKEN="xxx"
Run Code Online (Sandbox Code Playgroud)

两者build.sbt和您的应用程序都run应该有权访问sys.env("SECRET_TOKEN").

在评论部分,布鲁诺建议SECRET_TOKEN="xxx" sbt,这显然有效,但我不知道这与export.

任何状况之下,

object Hello extends App {
  println(sys.env("SECRET_TOKEN"))
}
Run Code Online (Sandbox Code Playgroud)

为我工作

sbt:hello> run
[info] Running Hello
xxx
Run Code Online (Sandbox Code Playgroud)