运行后运行任务

时间:2018-03-12 09:50:30

标签: scala playframework sbt playframework-2.6

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

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

现在我想在播放停止时使用dockerComposeDown拆掉所有的docker容器。关于如何实现这一目标的任何想法?

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

run in Compile := {
  (run in Compile dependsOn(dockerComposeUp)).evaluated
  dockerComposeDown.value
}

1 个答案:

答案 0 :(得分: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 。执行后,它应打印出“测试打印”。