1. Обзор
Gradle обычно используется разработчиками для управления жизненным циклом сборки проекта. Это инструмент сборки по умолчанию для всех новых проектов Android.
В этом руководстве мы узнаем о Gradle Wrapper, сопутствующей утилите, упрощающей распространение проектов.
2. Gradle-обертка
Чтобы создать проект на основе Gradle, нам нужно установить Gradle на нашу машину. Однако, если наша установленная версия не совпадает с версией проекта, мы, вероятно, столкнемся со многими проблемами несовместимости.
Gradle Wrapper, также называемый сокращенно Wrapper , решает эту проблему.
Это скрипт, который запускает задачи Gradle с объявленной версией . Если заявленная версия не установлена, Wrapper устанавливает требуемую.
Основные преимущества Wrapper заключаются в том, что мы можем:
- Создайте проект с помощью Wrapper на любой машине без предварительной установки Gradle.
- Иметь фиксированную версию Gradle. Это дает многоразовые и более надежные сборки на конвейерах CI.
- Легко обновитесь до новой версии Gradle, изменив определение Wrapper.
В следующих разделах мы будем запускать задачи Gradle, требующие локальной установки Gradle .
2.1. Генерация файлов-оболочек
Чтобы использовать Wrapper, нам нужно сгенерировать определенные файлы. Мы создадим эти файлы, используя встроенную задачу Gradle, называемую оболочкой.
Обратите внимание, что нам нужно сгенерировать эти файлы только один раз.
Теперь давайте запустим задачу- оболочку
в каталоге нашего проекта:
$ gradle wrapper
Давайте посмотрим на вывод этой команды:
Давайте посмотрим, что это за файлы:
gradle-wrapper.jar
содержит код для загрузки дистрибутива Gradle, указанного в файлеgradle-wrapper.properties
gradle-wrapper.properties
содержит свойства среды выполнения Wrapper — самое главное, версию дистрибутива Gradle, совместимую с текущим проектом.gradlew
— это скрипт, который выполняет задачи Gradle с помощью Wrapper.gradlew.bat
— пакетный скрипт, эквивалентныйgradlew
, для машин Windows .
По умолчанию задача оболочки
создает файлы оболочки с версией Gradle, установленной в данный момент на компьютере. При необходимости мы можем указать другую версию:
$ gradle wrapper --gradle-version 6.3
Мы рекомендуем проверять файлы Wrapper в системе управления версиями, такой как GitHub. Таким образом мы гарантируем, что другие разработчики смогут запустить проект без необходимости установки Gradle.
2.2. Запуск команд Gradle с помощью Wrapper
Мы можем запустить любую задачу Gradle с помощью Wrapper, заменив gradle
на gradlew .
Чтобы вывести список доступных задач, мы можем использовать команду gradlew tasks
:
$ gradlew tasks
Давайте посмотрим на вывод:
Help tasks
----------
buildEnvironment - Displays all buildscript dependencies declared in root project 'gradle-wrapper'.
components - Displays the components produced by root project 'gradle-wrapper'. [incubating]
dependencies - Displays all dependencies declared in root project 'gradle-wrapper'.
dependencyInsight - Displays the insight into a specific dependency in root project 'gradle-wrapper'.
dependentComponents - Displays the dependent components of components in root project 'gradle-wrapper'. [incubating]
help - Displays a help message.
model - Displays the configuration model of root project 'gradle-wrapper'. [incubating]
outgoingVariants - Displays the outgoing variants of root project 'gradle-wrapper'.
projects - Displays the sub-projects of root project 'gradle-wrapper'.
properties - Displays the properties of root project 'gradle-wrapper'.
tasks - Displays the tasks runnable from root project 'gradle-wrapper'.
Как мы видим, результат такой же, как и при запуске этой задачи с помощью команды gradle
.
3. Общие проблемы
Теперь давайте рассмотрим некоторые распространенные проблемы, с которыми мы можем столкнуться при работе с Wrapper.
3.1. Глобальный .gitignore, который игнорирует все файлы JAR
Некоторые организации не разрешают разработчикам регистрировать JAR-файлы в своей системе управления версиями. Обычно в таких проектах в глобальном файле .gitignore
есть правило игнорировать все jar-файлы. Поэтому файл gradle-wrapper.jar
не регистрируется в репозитории git. По этой причине задачи Wrapper не запускаются на других машинах. В таких случаях нам нужно принудительно добавить файл gradle-wrapper.jar
в git :
git add -f gradle/wrapper/gradle-wrapper.jar
Точно так же у нас может быть файл .gitignore
для конкретного проекта , который игнорирует файлы jar. Мы можем исправить это, либо ослабив правило .gitignore
, либо принудительно добавив файл jar-оболочки, как показано выше.
3.2. Отсутствует папка-оболочка
При проверке проекта на основе оболочки мы можем забыть включить папку оболочки
, которая существует внутри папки gradle
. Но, как мы видели выше, папка оболочки
содержит два важных файла: gradle-wrapper.jar
и gradle-wrapper.properties.
Без этих файлов мы получим ошибки при выполнении задач Gradle с Wrapper. Поэтому мы должны проверить папку- оболочку
в системе контроля версий .
3.3. Удаленные файлы-оболочки
Проекты на основе Gradle содержат папку .gradle
, в которой хранится кеш для ускорения выполнения задач Gradle. Иногда нам нужно очистить кеш , чтобы устранить проблемы со сборкой Gradle. Обычно мы удаляем всю папку .gradle
. Но мы можем перепутать папку Gradle Wrapper с папкой .gradle
и
тоже удалить ее. После этого мы обязательно столкнемся с проблемами при попытке запуска задач Gradle с помощью Wrapper. ``
Мы можем решить эту проблему, вытащив последние изменения из источника . Кроме того, мы можем восстановить файлы Wrapper.
4. Вывод
В этом уроке мы узнали о Gradle Wrapper и его основном использовании. Мы также узнали о некоторых распространенных проблемах, с которыми мы можем столкнуться при работе с Gradle Wrapper.
Как обычно, мы можем проверить проект со сгенерированными файлами Gradle Wrapper на GitHub .