我正在开发一个依赖于两个配置为spring boot微服务的仿真器的应用服务器。我们最近从根项目中将模拟器提取到一个单独的存储库中,因为它们也被其他一些项目使用,这对于项目间维护来说效果更好一些。我希望能够从主项目根运行这些模拟器,而不是必须检查他们的存储库并从该目录运行。我们为gradle集成测试做了类似的事情 - 我们使用ExecFork(https://github.com/psxpaul/gradle-execfork-plugin)启动这两个进程。这里的问题是,当构建完成时,进程就会死亡。
我正在寻找的东西与此相似,所以我可以运行,例如./gradlew startEmulators
并让两个模拟器检出指定的版本并阻止gradle任务(占用命令窗口,ctrl-c停止)或者比gradle任务更长。阻止它们的能力也很方便,但这是一种想要而不是必须拥有的东西。
我也会选择替代Gradle的解决方案,但最好不要太复杂 - 这需要我可以简单地向开发团队发出指令
答案 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
提供输入之前,构建不会完成。它垄断了一个终端窗口,但我现在可以忍受它了