在多项目gradle构建中运行所有微服务

在多项目gradle构建中运行所有微服务,gradle,microservices,Gradle,Microservices,我有一个多项目的gradle构建,大致设置如下: RootProject - ServiceA - ServiceB - ServiceC - UI task runApp(type: JavaExec) { main = 'App' classpath = sourceSets.main.runtimeClasspath } 每个子项目都使用Spark框架并运行嵌入式web服务器。这基本上是一个微服务设置,所以它们都需要启动并运行,整个系统才能工作 它们各自有一个定义如下的

我有一个多项目的gradle构建,大致设置如下:

RootProject
- ServiceA
- ServiceB
- ServiceC
- UI
task runApp(type: JavaExec) {
    main = 'App'
    classpath = sourceSets.main.runtimeClasspath
}
每个子项目都使用Spark框架并运行嵌入式web服务器。这基本上是一个微服务设置,所以它们都需要启动并运行,整个系统才能工作

它们各自有一个定义如下的任务:

RootProject
- ServiceA
- ServiceB
- ServiceC
- UI
task runApp(type: JavaExec) {
    main = 'App'
    classpath = sourceSets.main.runtimeClasspath
}
我知道我可以通过IDE手动启动每个服务,或者为每个子项目打开不同的终端并运行
gradlew ServiceA:runApp
,但我想做的是在根级别创建一个
runSystem
任务,它将启动所有功能,以便在开发期间轻松运行整个系统


如何使用Gradle执行此操作?

如果在根项目上运行任务,Gradle将在所有子项目上调用相同的任务(如果存在)。只需从根文件夹执行
runApp


但是,在您的情况下,您的runApp任务可能不会退出,因为它会启动服务器,因此执行不会转移到下一个项目。您可以启用并行执行,也可以修改任务以在后台运行服务器任务(使用
ProcessBuilder

如果在根项目中运行
runApp
,会发生什么?