运行后运行任务

问题描述 投票:1回答:1

我在执行run之前启动了一些docker容器来启动我的play-framework项目:

run in Compile := (run in Compile dependsOn(dockerComposeUp)).evaluated

现在我想在游戏停止时使用dockerComposeDown拆掉所有的码头集装箱。关于如何实现这一目标的任何想法?

我已经通过Doing something after an input task,但是启动容器并立即再次阻止它们。 (实际上它甚至会在启动容器之前停止容器。)这是我尝试过的:

run in Compile := {
  (run in Compile dependsOn(dockerComposeUp)).evaluated
  dockerComposeDown.value
}
scala playframework sbt playframework-2.6
1个回答
1
投票

另一种方法是按顺序调用docker任务来运行任务。你可以实现这个,如下所述:

lazy val testPrint =  taskKey[Unit]("showTime")
testPrint := {
  println("Test print.")
}

lazy val testRun =  taskKey[Unit]("test build")
testRun := {

  Def.sequential((runMain in Compile).toTask(" com.mycompany.MainClass "), testPrint).value
}

首先定义testPrint任务,在您的情况下可以是dockerTask,然后定义testRun,它将按顺序运行两个任务。要运行它,只需执行sbt testRun。执行后,它应打印出“测试打印”。

© www.soinside.com 2019 - 2024. All rights reserved.