从一个简单的方法评估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]以及从哪里获得这些。还有其他方法可以实现类似的逻辑吗?

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

设置可能仅取决于其他设置;任务可能仅取决于设置和其他任务;然而,命令基本上可以随心所欲。它们是顶级构造。一个设置或任务不能依赖于一个命令,所以你不能只对所有事情使用命令,但听起来你想要做的是一件顶级的事情。

最新更新