解决Gradle性能问题

时间:2018-12-30 18:31:54

标签: performance gradle junit

最近,我们的构建时间一直在不断变化。我们的基线在1-2分钟之间,但现在有时可能需要20分钟。我一直在努力寻找原因,但是遇到了一些麻烦。感觉像是在构建时触发通量变化的更改是完全任意的,或者至少我找不到它们之间的潜在联系。

这是当前构建时间的样子: enter image description here

现在看来,问题似乎出在任务执行时间上,因此让我们更详细地看一下: enter image description here

这表明umlgen-transformer项目的测试任务是罪魁祸首。这个项目与大约1分钟内建立的项目之间的唯一区别是一个微小的xml文件。每个单元测试都将读取该xml文件作为输入。这是典型的测试结果:

@Test
def void testComponentNamesUpdated() {
     loadModel("/testData/ProducerConsumer.uml")

     val trafo = new ComponentTransformation

     trafo.execute(model)

     val componentNames = model.allOwnedElements.filter(Component).map[name]

     assertThat(componentNames).contains(#{"ProducerComponent", "ConsumerComponent"})
 }

(。uml文件只是存储为xml的UML模型)。我不认为这是导致构建时间增加的根本原因,原因有几个:1)xml文件非常小,大约200kb 2)单元测试中的行为极其简单并且执行速度非常快3)当单元测试通过Eclipse运行时,它们会在几秒钟内执行4)无关方面的构建时间,例如编译kotlin代码的时间,也显着增加了5)这不是我们遇到这个问题的唯一项目

我尝试过的事情:

  • 设置org.gradle.parallel = true
  • 将gradle deamon的内存增加到3gb
  • 更新到gradle 5
  • 清除所有gradle缓存
  • 不使用gradle守护程序进行构建
  • 简化build.gradle脚本。我已经删除了几个插件和任务,以排除它们可能的原因

我现在才使用Gradle几个月,所以我希望获得更多确定性方法的反馈,以了解gradle在做什么(或找到某种方法将其排除在可能的原因之外)。请让我知道是否有任何其他信息会有所帮助。

0 个答案:

没有答案