从一个简单的方法评估sbt任务的正确方法

时间:2013-12-11 14:37:37

标签: scala sbt

我有一个任务,取决于其他设置,应该确定是否将我的项目部署到生产服务器,基本上如果一切正常,我会调用publish。但据我所知,如果将发布任务作为依赖项或在其上调用.value,它将在deploy任务之前进行评估,这是错误的。所以我必须以某种方式从我的方法稍后运行发布,我有以下结构:

val deploy: Initialize[...] = (...) map { (...) =>

  def innerMethod() = { ... } // <- here i need run publish

}

我所知道的唯一方法是:

EvaluateTask(struct, publish in Deploy, state, projRef)

它有效,但我需要依赖buildStructurestatsthisProjectRef设置,我不喜欢这些设置。任务.evaluate上还有一个方法,它需要一些Setting[Scope]以及从哪里获得此方法。还有其他方法可以实现类似的逻辑吗?

1 个答案:

答案 0 :(得分:1)

您是否考虑过将其命名为命令而不是任务? http://www.scala-sbt.org/release/docs/Extending/Commands.html

设置可能仅取决于其他设置;任务可能只取决于设置和其他任务;但是,命令基本上可以做任何他们想做的事情。它们是顶级构造。设置或任务不能依赖于命令,因此您不能仅仅使用命令来执行所有操作,但听起来您正在尝试执行的操作是顶级操作。