并行启动多个Gradle“spring-boot”插件“bootRun”任务

时间:2014-05-13 02:05:38

标签: java spring gradle spring-boot

我有一个使用Gradle构建的多项目Spring Boot应用程序。我尝试做的是从命令行使用Spring Boot的subprojects任务来运行各种bootRun来执行一些" ad-hoc"通过gradle bootRun进行测试。但是,似乎每个守护进程按顺序启动和停止。有没有办法让我的所有Boot守护进程使用spring-boot插件并行运行?

非常感谢任何建议:)

1 个答案:

答案 0 :(得分:11)

独立项目的任务可以使用--parallel标志并行执行。

要并行执行多项目构建,用户必须通过命令行开关声明他们希望并行执行项目:

--parallel
    \\ Tells Gradle to execute decoupled projects in parallel. Gradle will attempt to determine the optimal number of executors to use.
--max-workers=4
    \\ Tells Gradle to execute decoupled projects in parallel, using the specified number of workers. The default is the number of processors.

与Gradle守护程序类似,应该可以基于每个用户和每个项目启用/配置并行执行。这可以通过gradle.properties

中设置的构建环境属性来完成
org.gradle.parallel: When set to `true`, Gradle will execute with the parallel executer

org.gradle.workers.max: Specify the maximum number of workers to use for parallel execution. This property does not in itself enable parallel execution,
                        but the value will be used whether Gradle is executed with `--parallel` or `org.gradle.parallel=true`.

资源链接:

  

这里给出了一个完整的并行运行示例: https://github.com/camiloribeiro/cucumber-gradle-parallel/blob/master/build.gradle#L50

并行执行如何工作?

首先,您需要告诉Gradle使用并行模式。您可以使用命令行参数(Appendix D, Gradle Command Line)或配置构建环境(Section 12.1, “Configuring the build environment via gradle.properties”)。除非您提供特定数量的并行线程,否则Gradle会尝试根据可用的CPU内核选择正确的数字。每个并行工作者在执行任务时专门拥有给定项目。这意味着来自同一项目的2个任务永远不会并行执行。因此,只有多项目构建才能利用并行执行。完全支持任务依赖性,并行工作者将首先开始执行上游任务。请记住,从顺序执行中已知的解耦任务的字母顺序排列并不真正适用于并行模式。您需要确保正确声明任务依赖项以避免排序问题。

资源链接: https://docs.gradle.org/current/userguide/multi_project_builds.html

从版本3.5开始,Gradle可以打印并行工作人员状态:

<===========--> 90% EXECUTING
> :backend-service:bootRun
> :frontend-service:bootRun