我有一个任务,取决于其他设置,应该确定是否将我的项目部署到生产服务器,基本上如果一切正常,我会调用publish
。但据我所知,如果将发布任务作为依赖项或在其上调用.value
,它将在deploy
任务之前进行评估,这是错误的。所以我必须以某种方式从我的方法稍后运行发布,我有以下结构:
val deploy: Initialize[...] = (...) map { (...) =>
def innerMethod() = { ... } // <- here i need run publish
}
我所知道的唯一方法是:
EvaluateTask(struct, publish in Deploy, state, projRef)
它有效,但我需要依赖buildStructure
,stats
,thisProjectRef
设置,我不喜欢这些设置。任务.evaluate
上还有一个方法,它需要一些Setting[Scope]
以及从哪里获得此方法。还有其他方法可以实现类似的逻辑吗?
答案 0 :(得分:1)
您是否考虑过将其命名为命令而不是任务? http://www.scala-sbt.org/release/docs/Extending/Commands.html
设置可能仅取决于其他设置;任务可能只取决于设置和其他任务;但是,命令基本上可以做任何他们想做的事情。它们是顶级构造。设置或任务不能依赖于命令,因此您不能仅仅使用命令来执行所有操作,但听起来您正在尝试执行的操作是顶级操作。