我发布到内部 Nexus 存储库。我们有两个存储库,“开发”和“生产”。开发人员使用开发存储库,构建团队使用他们从安全区域中的机器访问的生产存储库。我想添加一个环境变量或 SBT 配置,它使用默认值“dev”定义 STAGE。在生产构建框上,STAGE 将被覆盖为“生产”。我怎样才能做到这一点?我能够在我的 build.sbt 文件中定义阶段并在 publishTo 任务中使用它,我只是不知道如何从环境中获取值(value)。这是我所拥有的。
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")
}
最佳答案
您可以在系统属性中传递阶段并将其读入设置:
stage := sys.props.getOrElse("stage", default = "dev")
使用 sbt -Dstage=production
在您的构建环境中传递它。
https://stackoverflow.com/questions/26406013/
相关文章:
ios - 如何为 iPhone 构建 Boost-Libraries
android - 如何在 Gradle 构建脚本(Android)中定义和使用常量?
javascript - 如果我仍然在构建时连接所有文件,我为什么要使用 require.js?
javascript - 需要一个带有 webpack 的模块
java - 将 Google Guava 添加到 Android 项目 - 显着减慢构建速度
c# - 如何在我的应用程序中显示上次构建的内部版本号和/或日期时间?
.net - MSBuild 和 F# 的 FAKE 有什么区别?