运行 多项目中的所有微服务 gradle 构建
Run all microservices in a multi-project gradle build
我有一个多项目 gradle 构建,大致设置如下:
RootProject
- ServiceA
- ServiceB
- ServiceC
- UI
这些子项目中的每一个都使用 Spark 框架和 运行 嵌入式 Web 服务器。它基本上是一个微服务设置,因此它们都需要启动并 运行 整个系统才能正常工作。
他们每个人都有一个这样定义的任务:
task runApp(type: JavaExec) {
main = 'App'
classpath = sourceSets.main.runtimeClasspath
}
我知道我可以通过我的 IDE 或通过为每个子项目和 运行 宁 gradlew ServiceA:runApp
打开不同的终端来手动启动每项服务,但我会喜欢做的是在根级别创建一个 runSystem
任务,它将启动所有内容,以便在开发过程中 运行 整个系统变得容易。
如何使用 Gradle 执行此操作?
如果您 运行 根项目上的任务,Gradle 会在所有子项目上调用相同的任务(如果存在)。只需从根文件夹执行 runApp
。
但是,在您的情况下,您的 运行App 任务可能不会退出,因为它启动了一个服务器,因此执行不会转到下一个项目。您可以启用并行执行,或将您的任务修改为 运行 您在后台的服务器任务(使用 ProcessBuilder
)
我有一个多项目 gradle 构建,大致设置如下:
RootProject
- ServiceA
- ServiceB
- ServiceC
- UI
这些子项目中的每一个都使用 Spark 框架和 运行 嵌入式 Web 服务器。它基本上是一个微服务设置,因此它们都需要启动并 运行 整个系统才能正常工作。
他们每个人都有一个这样定义的任务:
task runApp(type: JavaExec) {
main = 'App'
classpath = sourceSets.main.runtimeClasspath
}
我知道我可以通过我的 IDE 或通过为每个子项目和 运行 宁 gradlew ServiceA:runApp
打开不同的终端来手动启动每项服务,但我会喜欢做的是在根级别创建一个 runSystem
任务,它将启动所有内容,以便在开发过程中 运行 整个系统变得容易。
如何使用 Gradle 执行此操作?
如果您 运行 根项目上的任务,Gradle 会在所有子项目上调用相同的任务(如果存在)。只需从根文件夹执行 runApp
。
但是,在您的情况下,您的 运行App 任务可能不会退出,因为它启动了一个服务器,因此执行不会转到下一个项目。您可以启用并行执行,或将您的任务修改为 运行 您在后台的服务器任务(使用 ProcessBuilder
)