我有一个任务,根据其他设置,它应该决定是否将我的项目部署到生产服务器,基本上,如果一切正常,我会调用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]
以及从哪里获得这些。还有其他方法可以实现类似的逻辑吗?
您是否考虑过将其作为命令而不是任务?http://www.scala-sbt.org/release/docs/Extending/Commands.html
设置可能仅取决于其他设置;任务可能仅取决于设置和其他任务;然而,命令基本上可以随心所欲。它们是顶级构造。一个设置或任务不能依赖于一个命令,所以你不能只对所有事情使用命令,但听起来你想要做的是一件顶级的事情。