Зачем мне запускать gradle clean build вместо gradle build?
Из того, что я понимаю, Gradle может обнаруживать изменения в источнике и обновлять конечные артефакты, если это необходимо. Так зачем мне еще clean?
Ответ 1
чистая задача определяется java-плагином и просто удаляет папку buildDir, тем самым очищая все, включая остатки предыдущих версий, которые больше не актуальны. Невыполнение этого может привести к нечистой сборке, которая может быть нарушена из-за сборки артефактов, созданных предыдущими сборками.
В качестве примера предположим, что ваша сборка содержит несколько тестов, которые были провалены, и вы решили, что они устарели, поэтому их необходимо удалить. Без очистки результатов теста (с помощью задачи cleanTest) или построения полностью (путем выполнения чистой задачи) вы столкнетесь с неудачными результатами тестов, которые приведут к сбою сборки. Подобные побочные эффекты могут возникать и с ресурсами/классами, удаленными из источников, но остающимися в папке сборки, которая не была очищена.
Ответ 2
Удаляет каталог сборки. (Сборка содержит выходные данные операции gradle)
Ответ 3
Другие инструменты сборки, такие как buck, обнаружат, что некоторые тесты удалены и не будут запускать их без необходимости запуска чистой цели. Я думаю, что это ловушка gradle.