Решение проблем производительности Gradle - PullRequest
0 голосов
/ 30 декабря 2018

В последнее время время нашей сборки сильно колебалось.Наша базовая линия была между 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 - это просто модель UML, сохраненная в формате xml)Есть несколько причин, почему я не думаю, что это является основной причиной нашего увеличения времени сборки: 1) XML-файл невероятно мал, ~ 200 КБ 2) Поведение в модульных тестах чрезвычайно просто и выполняется довольно быстро 3)когда модульные тесты выполняются через Eclipse, они выполняются за секунды. 4) Время сборки несвязанных аспектов, таких как время компиляции кода Kotlin, также значительно увеличилось. 5) Это не единственный проект, с которым у нас возникла эта проблема..

Что я пробовал:

  • Настройка org.gradle.parallel = true
  • Увеличение памяти gradle deamon до 3 ГБ
  • Обновлениек gradle 5
  • Очистка всех кэшей gradle
  • Сборка без демона gradle
  • Упрощение сценариев build.gradle.Я удалил несколько плагинов и задач, чтобы исключить их как возможные причины

Я использую Gradle только пару месяцев, так что я надеюсь получить отзывы о более убедительных способах выяснить, чтоGradle делает (или найти способ вычеркнуть его из списка возможных причин).Пожалуйста, дайте мне знать, если какая-либо дополнительная информация будет полезна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...