Как заставить задачу sbt использовать определенную область конфигурации?

У меня есть задача lazy val task = TaskKey[Unit], которая принимает lazy val setting = SettingKey[String]в качестве входных данных. У меня также есть три разных независимых области конфигурации (config("dev")., config("stage"),config("prod"))и файл build.sbt, в котором указаны разные значения для settingдля каждой области конфигурации (setting in stage := "foo".... ).

Я ожидал, что вызов taskс использованием префикса области конфигурации заставит задачу использовать значения из соответствующей области конфигурации (, например. >dev:taskзаставит задачу использовать значения settingиз dev, использование команды >stage:taskзаставит задачу использовать значения settingиз stage,... ). Однако, похоже, это не работает.

Как я могу заставить taskиспользовать настройки из определенной области конфигурации?

build.sbt:

setting := "default setting"

setting in stage := "stage setting"

setting in prod  := "prod setting"

Строй.скала:

import sbt._
import Keys._

object TaskBuild extends Build {
  val setting = SettingKey[String]("setting", "a simple string setting")

  val task = TaskKey[Unit]("task", "a simple task experiment")

  val taskTask = task <<= setting map { s: String =>
    println("Setting is: " + s)
  }

  lazy val dev = config("dev") describedAs("dev environment settings")
  lazy val stage = config("stage") describedAs("stage environment settings")
  lazy val prod = config("prod") describedAs("prod environment settings")

  lazy val root = Project(
    "project",
     file("."),
     settings = Defaults.defaultSettings ++ Seq(taskTask)
  )
 .configs(dev, stage, prod)
}
11
задан Rob Starling 5 July 2013 в 07:42
поделиться