SBT env变量从何而来?

时间:2019-02-22 10:01:57

标签: scala sbt environment-variables

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

sys.env("SECRET_TOKEN")

问题在于,在sbt shell中未定义SECRET_TOKEN,因此应用程序崩溃了。

所以:

$ export SECRET_TOKEN="xxx"
$ sbt
[... sbt loads]
sbt> run
[ crashes because of the env var not found ]

就像sbt shell只能获取当前环境的一部分一样。

我想念什么吗?

谢谢

1 个答案:

答案 0 :(得分:1)

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

给予

$ export SECRET_TOKEN="xxx"

build.sbt和您在run期间的应用程序都应有权访问sys.env("SECRET_TOKEN")

在评论部分,Bruno建议了SECRET_TOKEN="xxx" sbt,这显然有用,但是我不知道这与export有何不同。

无论如何,

object Hello extends App {
  println(sys.env("SECRET_TOKEN"))
}

为我工作

sbt:hello> run
[info] Running Hello
xxx