【问题标题】:Gradle - Compile submodules in parallelGradle - 并行编译子模块
【发布时间】:2015-07-20 19:24:54
【问题描述】:

我有一个包含两个子模块的项目。

  1. 客户端 - 基于 Google 网络开发工具包的 UI
  2. 服务器 - 基于 Spring Boot 的服务器。

现在在服务器上的我的 Gradle 配置(构建文件)中,我从客户端创建一个 jar 文件,然后通过下面的 sn-p 将其包含在服务器上。最后,我根据服务器配置创建了一个 .war 文件。

dependencies {

    compile project(':client')

    }

架构类似于 Spring Boot 提出的资源处理方式。

现在,当我运行 Gradle 构建时,因为服务器依赖于客户端,所以在客户端编译和测试完成之前,服务器编译不会开始。

我觉得我并没有利用 Gradle 的并行性来编译客户端和服务器。

是否有任何方法可以并行编译和运行测试用例,然后仅在两个子模块的任务都完成时才创建 .war 文件?如何访问客户端和服务器模块的配置,然后在 rootProject 上创建一个新的 war 文件?

【问题讨论】:

    标签: gradle spring-boot


    【解决方案1】:

    您可以尝试在 Gradle 命令中添加标志 --parallel。然而,这仍然是孵化功能。我注意到运行 Gradle 守护程序时构建时间显着改善,因此您也可以尝试一下。

    【讨论】:

    • 这只会并行执行独立的项目。不幸的是,只需使用配置注入就可以很容易地将项目耦合在一起。一个项目依赖另一个项目当然是另一个例子。
    【解决方案2】:

    不,此级别的并行性当前不可用。正如in their spec 所述,我认为团队正在慢慢地朝着通用并行任务执行的方向努力。这应该允许您要求的那种行为。

    也就是说,如果测试是独立的,您可以通过maxParallelForksforkEvery 选项并行运行测试。 MrHaki 在他的博客上为此提供了short how-to。请注意,这只适用于单个 Test 任务实例。

    【讨论】:

      猜你喜欢
      • 2018-09-04
      • 1970-01-01
      • 2022-08-03
      • 2014-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多