Scala 设置sbt';s仅在特定命令中设置键

Scala 设置sbt';s仅在特定命令中设置键,scala,sbt,sbt-native-packager,Scala,Sbt,Sbt Native Packager,假设我在自己的SBT插件中有一个设置键: object MySbtPlugin extends AutoPlugin { ... object autoImport { object MyKeys { val task = TaskKey[Seq[File]]("task", "some task") val prod = SettingKey[Boolean]("prod", "Only enable when running `stage`.")

假设我在自己的SBT插件中有一个设置键:

object MySbtPlugin extends AutoPlugin {
  ...
  object autoImport {
    object MyKeys {
      val task = TaskKey[Seq[File]]("task", "some task")
      val prod = SettingKey[Boolean]("prod", "Only enable when running `stage`.")
    }
  }

  val baseSettings = Seq(
    prod in task := false,

    vuefy in Assets := Def.task {
      val isProd = (prod in task).value
      ...
现在我希望
prod
成为:

  • true
    运行
    sbt阶段时
  • 但是运行
    sbt run
    false
    。这是用于Playframework的
我在我的
build.sbt
中尝试了许多组合,但它们似乎不起作用。例如:

  • VueKeys.vuefy中的MyKeys.prod在资产中:=true
    设置该值;这不是我想要的
  • VueKeys.vuefy中的MyKeys.prod:=true不起作用。这让我很困惑,为什么它甚至没有将值设置为true
  • 阶段中的VueKeys.vuefy中的MyKeys.prod:=true不起作用
我想我不明白SBT中的范围界定是如何工作的。如果有人能帮助我,那就太好了


谢谢。

您是否尝试过
prod:=false
prod-in-Runtime:=true
?我会试试。你能解释一下为什么你认为这是正确的吗?谢谢,这好像不管用。