Зачем запускать "gradle clean"?

Почему я должен запускать "gradle clean build "вместо" gradle build"? Насколько я понимаю, gradle может обнаруживать изменения источника и при необходимости обновлять конечные артефакты. Так почему мне все еще нужно "убирать"?

2 ответов


на очистить задание определяется плагин java и он просто удаляет папку buildDir, таким образом очищая все, включая остатки от предыдущих сборок, которые больше не актуальны. Это может привести к нечистой сборке, которая может быть нарушена из-за артефактов сборки, созданных предыдущими сборками.

в качестве примера предположим, что ваша сборка содержит несколько тестов, которые были неудачными, и вы решили, что они устарели, поэтому должны быть удаленный. Без очистки результатов тестирования (с помощью cleanTest task) или сборки полностью (запустив чистую задачу) вы застряли с неудачными результатами тестов, которые приведут к сбою сборки. Аналогичные побочные эффекты могут возникнуть и при удалении ресурсов/классов из источников, но оставшихся в папке сборки, которая не была очищена.


другие инструменты сборки, такие как buck, обнаружат, что некоторые тесты удалены и не будут запускать их без необходимости запуска чистой цели. Я думаю, что это ловушка от Gradle.