SBT:如何访问环境变量或配置?

时间:2014-10-16 13:43:40

标签: scala build sbt

我发布到内部Nexus存储库。我们有两个回购," dev"和"生产"。开发人员使用dev repo,构建团队使用他们从安全区域中的计算机访问的生产仓库。我想添加一个环境变量或SBT配置,用于定义STAGE,默认值为" dev"。在生产构建框中,STAGE将覆盖"生产"。我怎样才能做到这一点?我能够在build.sbt文件中定义stage并在publishTo任务中使用它,我只是无法弄清楚如何从环境中获取值。这就是我所拥有的。

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")
}

1 个答案:

答案 0 :(得分:30)

您可以在系统属性中传递stage并将其读入设置:

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

使用sbt -Dstage=production在构建环境中传递此内容。