【问题标题】:Pass System Property to `sbt console`?将系统属性传递给“sbt 控制台”?
【发布时间】:2016-05-13 15:20:21
【问题描述】:

借用这个有用的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

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

但是,使用 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

【问题讨论】:

    标签: scala sbt system-properties


    【解决方案1】:

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

    如果需要可以设置:

    • 在 sbt shelleval sys.props("foo") = "bar"
    • 在 REPL (console) 和 sys.props("foo") = "bar"
    • build.sbtval setFoo = sys.props("foo") = "bar"

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2015-03-18
        • 2019-06-22
        • 2017-03-02
        • 1970-01-01
        • 2015-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多