我一直在尝试直接从build.sbt文件设置环境变量,因为我需要使用此文件中定义的程序集jar名称。所以我一直在尝试使用echo输出已定义环境变量的结果,并在Scala应用程序代码sys.props.get("SPARK_APP_JAR_PATH")
的上下文中输出,但结果分别是空白或无。
环境变量配置有什么问题?
这是我如何在build.sbt中定义env变量:
assemblyJarName in assembly := "spark_app_example_test.jar"
mainClass in assembly := Some("example.SparkAppExample")
test in assembly := {}
fork := true
val envVars = sys.props("SPARK_APP_JAR_PATH") = "/path/to/jar/file"
这就是它对我有用的方式:
lazy val dockerRepo: String = sys.props.getOrElse("DOCKER_REPO", s"bpf.docker.repo")
或者用你的例子:
lazy val envVars = sys.props.getOrElse("SPARK_APP_JAR_PATH", "/path/to/jar/file")
根据文件:
系统属性可以作为JVM选项提供,也可以作为SBT参数提供,在两种情况下均为-Dprop = value。以下属性会影响SBT执行。
例如sbt -DSPARK_APP_JAR_PATH=/path/to/jar/file
见https://www.scala-sbt.org/release/docs/Command-Line-Reference.html#Command+Line+Options