Лучше использовать зависимости задач или 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.
Какой из рекомендуемых способов сделать это и почему? Есть ли преимущество одного над другим? Хотелось бы прояснить пожалуйста...:)
Ответы
Ответ 1
Всякий раз, когда вы можете, моделируйте новые действия как отдельные задачи. (В вашем случае вы можете добавить еще две задачи.) Это имеет много преимуществ:
- Лучшая обратная связь о том, какая активность в настоящее время выполняется или не работает
- Возможность объявлять входы и выходы задач (пожинать все выгоды, которые приходят от этого)
- Возможность повторного использования существующих типов задач
- Дополнительные возможности для Gradle для параллельного выполнения задач
- Etc.
Иногда нелегко моделировать деятельность как отдельную задачу. (Например, когда необходимо выполнить последующую обработку выходов существующей задачи на месте. Выполнение этого в отдельной задаче приведет к тому, что исходная задача никогда не будет up-to-date
для последующих прогонов.) Только тогда необходимо добавить действие к существующей задаче с doLast
.