jwe*_*313 1 gradle build.gradle
我是一个拥有大型多项目构建(~350个模块)的团队,我们注意到进行单个构建(-a)仍然需要花费大量时间.在构建整套事物时,开销并不是那么糟糕,但是当我们做类似的事情时:
cd my/individual/project
gradle -a --configure-on-demand --daemon build
Run Code Online (Sandbox Code Playgroud)
在配置阶段(在它开始构建任何东西之前,它仍然需要30-40秒,我们使用--dry-run选项测量)
我们有大约10个自定义任务,我们正在设置这些任务的输入和输出,但我们仍然看到这个非常长的配置时间.我们正在使用gradle 1.10
从远处说很难说.一个常见的错误是在配置阶段完成应该在执行阶段完成的工作.这是一个例子:
task myTask {
copy {
from ...
to ...
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,project.copy每次配置任务时都会调用该方法(因此将进行复制),这适用于每个单独的构建调用 - 无论运行哪个任务!要解决此问题,您需要将工作转移到任务操作中:
task myTask {
doLast {
copy {
from ...
into ...
}
}
}
Run Code Online (Sandbox Code Playgroud)
甚至更好,使用预定义的任务类型:
task myTask(type: Copy) {
from ...
into ...
}
Run Code Online (Sandbox Code Playgroud)
您可以采取一些步骤来查找性能问题的原因:
--info,--debug或--profilePS:指定输入和输出不会缩短配置时间(但可能是执行时间).
| 归档时间: |
|
| 查看次数: |
1320 次 |
| 最近记录: |