我在执行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
}
答案 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 。执行后,它应打印出“测试打印”。