【发布时间】:2015-08-28 04:08:14
【问题描述】:
我有一个问题,我已经连续处理了大约两天,但没有运气。我有两个任务,打包和部署,它们都根据部署到的环境而变化。我使用 sbt-native-packager 插件进行打包,使用 sbt-deploy-ssh 进行部署。
我的包任务被这样的 inputTask 调用:bundle "env"
lazy val setEnv : Def.Initialize[InputTask[String]] = Def.inputTask {
sbt.Def.spaceDelimited("<arg>").parsed(0)
}
lazy val configure : Def.Initialize[InputTask[String]] = Def.inputTask {
val env = setEnv.evaluated
writeConfig(env)
env
}
lazy val bundle = inputKey[Unit]("bundles project for specific env")
bundle := configure.parsed.flatMap { _ =>
(packageBin in config("universal")).taskValue
}.value
我的部署任务被一个 inputTask 调用,如下所示:deployTo "env"
val deployTo = inputKey[Unit]("Deploys to specific env")
deployTo := Def.inputTaskDyn {
val args = sbt.Def.spaceDelimited("<args>").parsed
deployWithDynamicServers(getServers(args(0)))
}.evaluated
def deployWithDynamicServers(servers: Seq[String]) = Def.taskDyn {
deploySsh.toTaks(" " + servers.mkString(" "))
}
我可以单独运行这两个,但我希望部署任务依赖于包任务。我想要做的是运行 deployTo 并将提供的环境也传递给包任务。
到目前为止,我运气不佳,因为我不断收到“非法动态引用错误”,即使包和部署任务都是 Def.inputTaksDyn
【问题讨论】:
标签: sbt