加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何使某个sbt任务使用特定的配置范围?

发布时间:2020-12-16 09:28:18 所属栏目:安全 来源:网络整理
导读:我有一个任务lazy val task = TaskKey [Unit],它将lazy val设置= SettingKey [String]作为输入.我还有三个不同的独立配置范围(config(“dev”),config(“stage”),config(“prod”))和build.sbt文件,它为每个配置范围指定不同的值(在舞台上设置:=“foo”…
我有一个任务lazy val task = TaskKey [Unit],它将lazy val设置= SettingKey [String]作为输入.我还有三个不同的独立配置范围(config(“dev”),config(“stage”),config(“prod”))和build.sbt文件,它为每个配置范围指定不同的值(在舞台上设置:=“foo”……).

我期望使用配置范围前缀调用任务会使任务使用来自相应配置范围的值(例如> dev:task将使任务使用dev中的设置值,使用命令> stage:task将使任务使用舞台上的设置值,…).但是,这似乎不起作用.

如何强制任务使用特定配置范围中的设置?

build.sbt:

setting := "default setting"

setting in stage := "stage setting"

setting in prod  := "prod setting"

Build.scala:

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

解决方法

我想你需要写一些类似的东西

val devTaskSetting = task <<= setting in dev map { s: String =>
   println("Setting in Dev is: " + s)
}

您还可以定义单独的任务键,如下所示

val devTask   = TaskKey[Unit]("task","a simple task experiment") in dev
val stageTask = TaskKey[Unit]("task","a simple task experiment") in stage

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读