如何有条件地修改现有的 SBT 任务

How do modify an existing SBT task conditionally

我想修改publish任务并有条件地执行它(0.13.8)。这是我尝试过的(简化):

publish := {
  Def.taskDyn {
    if (true) {
      Def.task {
        publish.value
      }
    } else {
      Def.task()
    }
  }.value
}

失败并出现以下异常:

[error] (root/*:publish) sbt.Init$RuntimeUndefined: References to undefined settings at runtime.

有什么想法吗?

试试这个:

publish := {
    if( true ) {
        publish
    } else Def.task {
        println("something else")
    }
}.value