2017-05-09 121 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