2017-05-09 114 views
1

我正在尝试执行sbt flywayMigrate -Denvi=foo,但未设置系统属性envi。非常感谢用于调试的指针,因为我现在几个小时都没有成功地找出这个问题的原因。迄今为止,SO或其他任何地方都没有问题。未设置SBT系统属性

build.sbt,这将被用作一个变量。

lazy val envi = sys.props.getOrElse("envi", "default") 

使用sys.env.get("ENVI"),而不是目前不是由于共享/团队回购考虑的选项。

sbt -Denvi=foo console 

否则将作为参数传递给主类,而不是要传递:

sbt console -Denvi=foo 
scala> sys.props.get("envi") 
res0: Option[String] = None 
scala> sys.props.getOrElse("envi", "default") 
res1: Option[String] = default 

scalasbt使用brew

回答

1

你的命令之前把环境变量设置JVM。

或者您可以设置在JAVA_OPTS变量的环境中开始sbt前:

export JAVA_OPTS="-Denvi=foo" 
sbt console 
scala> sys.props.getOrElse("envi", "default") 
res0: String = foo 
+0

你知道任何可能的原因,为什么产权不被设置,连同'sbt'? – Nogurenn

+0

如果您在命令之前放置环境变量,它将起作用。我更新了我的答案。 – Harald

+1

你可以通过调用'-d'来获得sbt的调试信息。比较'sbt -d console -Denvi = foo'和'sbt -d -Denvi = foo console'的输出 – Harald