2016-05-13 101 views
1

借款从这个有用的answer,我试图通过-Dfoo=barsbt console将系统属性传递给`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

回答

1

我可以使用控制台具有以下获取系统属性:

sbt console -Dturkey=fried 

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

run叉但console没有,于是干脆sbt -Dfoo=bar console

如果需要,你可以将其设置:

  • in sbt shell with eval sys.props("foo") = "bar"
  • 在REPL(console)与sys.props("foo") = "bar"
  • build.sbtval setFoo = sys.props("foo") = "bar"