为什么我的大型多项目gradle构建开始缓慢?

时间:2014-01-08 19:50:25

标签: gradle build.gradle

我在一个拥有大型多项目构建(~350个模块)的团队中,我们注意到进行单个构建(-a)仍然需要花费大量时间。在构建整套事物时,开销并不是那么糟糕,但是当我们做类似的事情时:

cd my/individual/project
gradle -a --configure-on-demand --daemon build

在配置阶段(在开始构建任何内容之前,它仍需要30-40秒,我们使用--dry-run选项进行测量)

我们有大约10个自定义任务,我们 设置这些任务的输入和输出,但我们仍然看到这个非常长的配置时间。我们正在使用gradle 1.10

1 个答案:

答案 0 :(得分:5)

从远处说很难说。一个常见的错误是在配置阶段完成应该在执行阶段完成的工作。这是一个例子:

task myTask {
    copy {
        from ...
        to ...
    }
}

这里,每次配置任务时,都会调用project.copy方法(因此会进行复制),这适用于每一次构建调用 - 无论哪个任务跑了!要解决此问题,您需要将工作转移到任务操作

task myTask {
    doLast {
        copy {
            from ...
            into ...
        }
    }
}

甚至更好,使用预定义的任务类型:

task myTask(type: Copy) {
    from ...
    into ...
}

您可以采取一些步骤来查找性能问题的原因:

  • 查看构建
  • 使用--info--debug--profile
  • 运行
  • 使用Java Profiler配置构建

PS:指定输入和输出不会缩短配置时间(但可能会缩短执行时间)。

相关问题