Подтвердить что ты не робот

Лучше использовать зависимости задач или task.doLast в Gradle?

После создания моего окончательного выходного файла с помощью Gradle я хочу сделать 2 вещи. Обновите файл local version.properties и скопируйте окончательный вывод в какой-то определенный каталог для архивации. Предположим, что у меня уже реализовано 2 метода, которые делают именно то, что я только что описал, updateVersionProperties() и archiveOutputFile().

Я знаю, интересно, что лучший способ сделать это...

Альтернатива A:

assembleRelease.doLast {
    updateVersionProperties()
    archiveOutputFile()
}

Альтернатива B:

task myBuildTask(dependsOn: assembleRelease) << {
    updateVersionProperties()
    archiveOutputFile()
}

И здесь я бы назвал myBuildTask вместо assembleRelease, как в альтернативном A.

Какой из рекомендуемых способов сделать это и почему? Есть ли преимущество одного над другим? Хотелось бы прояснить пожалуйста...:)

4b9b3361

Ответ 1

Всякий раз, когда вы можете, моделируйте новые действия как отдельные задачи. (В вашем случае вы можете добавить еще две задачи.) Это имеет много преимуществ:

  • Лучшая обратная связь о том, какая активность в настоящее время выполняется или не работает
  • Возможность объявлять входы и выходы задач (пожинать все выгоды, которые приходят от этого)
  • Возможность повторного использования существующих типов задач
  • Дополнительные возможности для Gradle для параллельного выполнения задач
  • Etc.

Иногда нелегко моделировать деятельность как отдельную задачу. (Например, когда необходимо выполнить последующую обработку выходов существующей задачи на месте. Выполнение этого в отдельной задаче приведет к тому, что исходная задача никогда не будет up-to-date для последующих прогонов.) Только тогда необходимо добавить действие к существующей задаче с doLast.