2016-05-13 144 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"