如何配置gradle来启动和停止在构建完成后保持活动状态的spring boot微服务?

时间:2017-07-17 13:05:03

标签: spring-boot gradle microservices

我正在开发一个依赖于两个配置为spring boot微服务的仿真器的应用服务器。我们最近从根项目中将模拟器提取到一个单独的存储库中,因为它们也被其他一些项目使用,这对于项目间维护来说效果更好一些。我希望能够从主项目根运行这些模拟器,而不是必须检查他们的存储库并从该目录运行。我们为gradle集成测试做了类似的事情 - 我们使用ExecFork(https://github.com/psxpaul/gradle-execfork-plugin)启动这两个进程。这里的问题是,当构建完成时,进程就会死亡。

我正在寻找的东西与此相似,所以我可以运行,例如./gradlew startEmulators并让两个模拟器检出指定的版本并阻止gradle任务(占用命令窗口,ctrl-c停止)或者比gradle任务更长。阻止它们的能力也很方便,但这是一种想要而不是必须拥有的东西。

我也会选择替代Gradle的解决方案,但最好不要太复杂 - 这需要我可以简单地向开发团队发出指令

1 个答案:

答案 0 :(得分:0)

答案最终变得有点笨拙,但它确实有效。基本上,它看起来像这样:

task runEmu1(type: com.github.psxpaul.task.JavaExecFork) {
     //execfork stuff
}
task runEmu2(type: com.github.psxpaul.task.JavaExecFork) {
     //execfork stuff
}
task runEmus() {
    dependsOn('runEmu1', 'runEmu2')
    doLast {
        ant.input(message: 'Press enter to shut down emulators')
    }
}

在并行进程中运行两个模拟器,这些进程在构建结束时自行处理。当然,在向ant.input提供输入之前,构建不会完成。它垄断了一个终端窗口,但我现在可以忍受它了