Gradle создает каждый подпроект, когда выполняется модульный тест - PullRequest
1 голос
/ 29 октября 2019

У меня есть проект, состоящий из нескольких подпроектов, которые определены в файле settings.gradle.

Всякий раз, когда я запускаю модульное тестирование одного из проектов, он всегда «конфигурирует» и компилирует зависимые модули. опять же, хотя на них нет никаких изменений.

Это действительно больно, так как это требует времени. У меня не было этой проблемы раньше в том же проекте, но она внезапно появилась. Есть идеи как это исправить? Я использую intellij для IDE и gradle для сборки. Вывод выглядит так:

> Configure project :xx1
compiling YYYY
> Configure project :xx2
compiling YYYY
> Configure project :xx3
compiling YYYY
> Configure project :xx4
compiling YYYY

1 Ответ

1 голос
/ 30 октября 2019

Как вы, вероятно, знаете, задача будет выполняться только в случае неудачной проверки UP-TO-DATE. Проверка задачи UP-TO-DATE будет

  • Взять хэш текущих входов задачи
  • Взять хэш текущих выходов задачи
  • Сравните текущие хэши схэши предыдущего запуска задачи
  • Задача считается UP-TO-DATE только в том случае, если оба текущих хэша совпадают с предыдущими хэшами

Попробуйте запустить gradle, передав флаг -i (или--info), чтобы увидеть результаты проверки UP-TO-DATE. Я предполагаю, что у задачи неправильно настроены входы / выходы, в результате чего проверка UP-TO-DATE провалилась где-то в вашем дереве задач. Возможно, вы используете текущую дату / время где-то для ввода задачи? (не делай этого!). Может быть, две задачи копируют файлы в один и тот же каталог? (не делайте этого)

Хороший способ проверить вашу сборку:

  1. Запустить чистую сборку
  2. Запустить сборку без очистки

В идеальном мире вторая сборка не будет работать. Если вторая сборка выполняет какие-либо задачи, вероятно, есть некоторые входы / выходы задач, которые неправильно настроены

...