В чем разница между концепциями Custom Task и Enhanced Task в Gradle?

Я часто встречаю в документации Gradle эти понятия. В чем разница между ними?

Из того, что я знаю, пользовательская задача - это класс, который инкапсулирует некоторую логику, но что такое расширенная задача и чем они отличаются?

2 ответа

Решение

simple task в Gradle это экземпляр DefaultTask и ничего не делает из коробки. Чтобы сделать это, нужно добавить код в определение задачи в вашем скрипте сборки.

enhanced task является экземпляром другого класса (например, задача "Копирование" является экземпляром " Копирование") и имеет некоторое поведение "из коробки". Вам просто нужно настроить это поведение в вашем скрипте сборки (например, указать, куда и куда копировать)

custom task это расширенная задача, которая является экземпляром класса, который вы написали сами.

Расширенная задача определяется в руководстве Gradle как:

Gradle поддерживает расширенные задачи, то есть задачи, которые имеют свои собственные свойства и методы. Это действительно отличается от того, к чему вы привыкли с целями Ant. Такие расширенные задачи либо предоставлены вами, либо предоставлены Gradle.

Это также говорит:

Gradle поддерживает два типа задач. Одним из таких типов является простая задача, в которой вы определяете задачу с закрытием действия. Мы видели это в главе 6, Основы скриптов сборки. Для задачи этого типа закрытие действия определяет поведение задачи. Этот тип задач хорош для реализации одноразовых задач в вашем скрипте сборки.

Другой тип задачи - это расширенная задача, в которой поведение встроено в задачу, и задача предоставляет некоторые свойства, которые можно использовать для настройки поведения. Мы видели это в главе 15 "Больше о задачах". Большинство плагинов Gradle используют расширенные задачи. С расширенными задачами вам не нужно реализовывать поведение задачи, как вы делаете с простыми задачами. Вы просто объявляете задачу и конфигурируете задачу, используя ее свойства. Таким образом, расширенные задачи позволяют повторно использовать часть поведения во многих разных местах, возможно, в разных сборках.

Поведение и свойства расширенной задачи определяются классом задачи. Когда вы объявляете расширенную задачу, вы указываете тип или класс задачи.

Другие вопросы по тегам