将系统属性传递给`sbt console`?

时间:2016-05-13 15:20:21

标签: scala sbt system-properties

借用这个有用的answer,我尝试将-Dfoo=bar传递给sbt console

鉴于SBT项目只有build.sbt

$cat build.sbt
scalaVersion := "2.11.8"

fork := true

我试过了:

$sbt '; set javaOptions += "-Dfoo=bar" ; console'

scala> sys.props.get("foo")
res0: Option[String] = None

但是,考虑到Some("bar")参数,我原本期望None而不是set ...

但是,使用sbt ... run按预期工作:

$cat src/main/scala/net/Main.scala 
package net

object Main {
       def main(args: Array[String]): Unit = 
           println("sys.props.get('foo'): " + sys.props.get("foo"))
}

$sbt '; set javaOptions += "-Dfoo=bar" ; run'
[info] Running net.Main 
[info] sys.props.get('foo'): Some(bar)

如何将foo=bar作为系统属性传递给console

2 个答案:

答案 0 :(得分:5)

run分叉但console没有,所以只是sbt -Dfoo=bar console

如果需要,您可以设置它:

  • 在sbt shelleval sys.props("foo") = "bar"
  • 带有console 的REPL(sys.props("foo") = "bar")中的
  • {li} in build.sbt val setFoo = sys.props("foo") = "bar"

答案 1 :(得分:1)

我可以使用控制台获取系统属性,其中包含以下内容:

sbt console -Dturkey=fried

scala> sys.props.get("turkey")
res1: Option[String] = Some(fried)