Перейти к основному содержимому

Руководство по обертке Gradle

· 5 мин. чтения

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

Давайте посмотрим на вывод этой команды:

./8079bd33383a8d0e5dc04c7685a18977.png

Давайте посмотрим, что это за файлы:

  • 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 .