我发布到内部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")
}
答案 0 :(得分:30)
您可以在系统属性中传递stage并将其读入设置:
stage := sys.props.getOrElse("stage", default = "dev")
使用sbt -Dstage=production
在构建环境中传递此内容。