2014-10-16 3 views
15

Публикация во внутренний репозиторий Nexus. У нас есть два РЕПО: «dev» и «production». Разработчики используют dev repo, команда сборки использует производственный репо, к которому они обращаются, от машин в безопасном месте. Я хотел бы добавить переменную окружения или конфигурацию SBT, которая определяет STAGE со значением по умолчанию «dev». На коробках сборки производства STAGE будет переоцениваться до «производства». Как я могу это сделать? Я могу определить этап в файле build.sbt и использовать его в задаче publishTo, я просто не могу понять, как получить значение из среды. Вот что у меня есть.SBT: Как получить доступ к переменной окружения или конфигурации?

val stage = settingKey[String]("stage") 

stage := "dev" 

publishTo <<= (version, stage) { (v: String, s: String) => 
    val nexus = "http://my-internal-nexus:8081/nexus/content/repositories/" 
    if (v.trim.endsWith("SNAPSHOT")) 
    Some("snapshots" at nexus + s + "-snapshots-m2") 
    else 
    Some("releases" at nexus + s + "-releases-m2") 
} 
+0

Возможный дубликат [Как читать переменные среды в Scala] (http://stackoverflow.com/questions/9997292/how-to-read-environment-variables-in-scala) –

ответ

28

Вы можете пройти этап системного свойства и прочитать его в настройки:

stage := sys.props.getOrElse("stage", default = "dev") 

Использование sbt -Dstage=production передать это в среде сборки.

+2

Этот ответ не распространяется на случай, когда «STAGE» - это переменная среды –

Смежные вопросы