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

我发布到内部 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/

相关文章:

c++ - CMake - 创建一个静态库

ios - 如何为 iPhone 构建 Boost-Libraries

android - 如何在 Gradle 构建脚本(Android)中定义和使用常量?

javascript - 如果我仍然在构建时连接所有文件,我为什么要使用 require.js?

javascript - 需要一个带有 webpack 的模块

java - 将 Google Guava 添加到 Android 项目 - 显着减慢构建速度

c# - 如何在我的应用程序中显示上次构建的内部版本号和/或日期时间?

.net - MSBuild 和 F# 的 FAKE 有什么区别?

visual-studio-2010 - 从命令行发布 Web 应用程序

c# - 如何在解决方案级别使用 Microsoft.Net.Compilers?