如何从现有任务创建自定义sbt任务

时间:2017-01-30 05:48:40

标签: scala sbt sbt-native-packager

我想创建一个使用publishLocal in Dockerlogin in ecrpublishLocal in Docker的自定义sbt任务。

另请注意,我修改了Docker中的" publishLocal"仅在自定义任务上设置。

我尝试编写下面的代码,但它没有用。

val releaseDev = taskKey[Unit]("push docker image")
releaseDev := (push in ecr).value
releaseDev := releaseDev.dependsOn(publishLocal in Docker).value
releaseDev := (projectSettings ++ Seq(repositoryName in ecr := (packageName in Docker).value + "-stg" + ":" + (version in Docker).value))

2 个答案:

答案 0 :(得分:1)

以下是如何从自定义任务中触发现有任务。根据您的问题,您希望以某种特定顺序触发它们,所以这就是您需要做的事情

lazy val releaseDev = taskKey[Unit]("push docker image")
releaseDev := Def.sequential(push in ecr, publishLocal in Docker).value

现在,当您触发releaseDev时,它会首先转为push in ecr,然后转为publishLocal in Docker

注意:不要忘记在lazy定义中添加taskKey,因为它可能会导致一些奇怪的初始化问题。

答案 1 :(得分:0)

谢谢marios。 我尝试编写下面的代码并正确处理任务依赖性。 但是,repositoryName用于项目设置之一。

CurrentCulture