我在执行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
}
另一种方法是按顺序调用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。执行后,它应打印出“测试打印”。