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

时间:2016-02-28 15:22:47

标签: gradle microservices

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

RootProject
- ServiceA
- ServiceB
- ServiceC
- UI

这些子项目中的每一个都使用Spark框架并运行嵌入式Web服务器。它基本上是一个微服务设置,所以它们都需要启动并运行整个系统才能工作。

他们每人都有一个如下定义的任务:

task runApp(type: JavaExec) {
    main = 'App'
    classpath = sourceSets.main.runtimeClasspath
}

我知道我可以通过我的IDE手动启动每项服务,也可以为每个子项目打开一个不同的终端并运行gradlew ServiceA:runApp,但我想要做的是创建runSystem在根级别执行任务,以便在开发过程中轻松运行整个系统。

如何使用Gradle执行此操作?

1 个答案:

答案 0 :(得分:2)

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

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