Программирование Android Что такое Gradle? Fri, April 19 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Что такое Gradle? Печать
Добавил(а) microsin   

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

Gradle основывает свой дизайн на следующих фундаментальных принципах:

Высокая производительность. Gradle избегает выполнения лишней работы, запуская только задачи, которое действительно нужны из-за изменения входных или выходных файлов. Gradle использует различные виды кэша, чтобы повторно использовать выходные данные от предыдущих сборок. С помощью фичи общего кэша сборки (shared build cache) вы можете повторно использовать выходные файлы компиляции от других машин (что полезно при совместной работе над большим проектом).

JVM foundation. Gradle работает на виртуальной машине Java (JVM). Это преимущество для пользователей, знакомых с Java, поскольку логика сборки может использовать стандартный Java API. Это также упрощает запуск Gradle на назных платформах.

Conventions. Gradle упрощает сборку общих типов проектов с помощью соглашений (conventions). Плагины устанавливают значимые настройки по умолчанию, чтобы сохранять минимальными скрипты сборки. Однако эти соглашения вас не ограничивают: вы можете конфигурировать настройки, добавлять свои собственные задачи, и выполнять многие другие кастомизации в своих сборках.

Расширяемость. У большинства сборок есть специальные требования, которые требуют специальной логики построения. Вы можете легко расширить Gradle, чтобы предоставить свою собственную логику сборки с пользовательскими задачами и плагинами. См. пример Android builds: они добавляют много новых концепций сборки, таких как flavors и типы сборки.

Поддержка IDE. Несколько основных IDE обеспечивают взаимодействие со сборками Gradle, включая Android Studio, IntelliJ IDEA, Eclipse, VSCode и NetBeans. Gradle также может создавать файлы решений, необходимые для загрузки проекта в Visual Studio.

Insight. Build Scan™ предоставляет обширную информацию о сборке, которую вы можете использовать для идентификации причины проблем. Вы также можете использовать Build Scan для выявления проблем с производительностью сборки и даже предоставления общего доступа к ним для получения справки по отладке.

[Терминология Gradle]

Полезно разобраться в основных понятиях, чтобы углубиться в изучение возможностей Gradle.

Projects. Проекты это то, что собирает Gradle. Проекты содержат скрипт сборки, который представляет собой файл в корневой директории проекта, и обычно называется build.gradle или build.gradle.kts. Скрипты сборки определяют задачи (tasks), зависимости (dependencies), плагины (plugins) и другие конфигурации для проекта. Одиночная сборка может содержать один или несколько проектов, и у каждый проекта может содержать свои собственные дочерние проекты (subprojects).

Tasks. Задачи (tasks) содержат логику для выполнения некоторой работы по компилированию кода, запуску тестов или распространению ПО. В большинстве случаев используются существующие задачи. Gradle предоставляет готовые задачи для реализации многих общих потребностей системы сборки, таких как встроенная задача Java Test, которая может выполнять тесты. Плагины предоставляют ещё больше типов задач.

Сами задачи состоят из:

Actions: части работы, которые что-то выполняют, например копирование файлов или компиляция исходного кода.
Inputs: значения, файлы и директории, над которыми работают actions.
Outputs: файлы и директории, которые actions модифицируют или генерируют.

Плагины. Подключаемые модули к средам разработки, которые позволяют вам внедрять новые концепции в построение, выходящие за рамки задач, файлов и конфигураций зависимостей. Например, большинство языковых плагинов добавляют концепцию исходных наборов в сборку.

Плагины обеспечивают возможность повторного использования логики и конфигурации в нескольких проектах. С плагинами вы можете написать задачу один раз и использовать ее в нескольких построениях. Также можно хранить общую конфигурацию, например, ведение журнала, описывать зависимости и осуществлять управление версиями, и все это в одном месте. Это уменьшает дублирование в скриптах сборки. Соответствующее моделирование процессов сборки с помощью плагинов может значительно улучшить простоту использования и эффективность.

Фазы сборки. Gradle анализирует и выполняет скрипты сборки в трех фазах, составляющих цикл сборки (Build Lifecycle):

Инициализация. Настраивается окружение для сборки и определяется, какие проекты будут в ней участвовать.
Конфигурация. Конструирует и конфигурирует дерево задач (task graph) для сборки. Определяет, какие задачи нужно запускать и в каком порядке, основываясь на задании, которое пользователь хочет запустить.
Выполнение. Запуск выбранных задач в конце фазы конфигурации.

Build. Сборка (build) это выполнение коллекции задач в проекте Gradle. Сборку запускают через интерфейс командной строки (CLI) или из IDE путем указания селекторов задач. Gradle конфигурирует сборку и выбирает задачи для запуска. Затем Gradle запускает минимально-полный набор требуемых задач и их зависимости.

Кэш gradle в операционной системе Windows находится в папке c:\Users\имяпользователя\.gradle\caches\. Для очистки кэша можно удалить содержимое этой папки, но для этого иногда понадобится остановить демона JDK (процесс OpenJDK или что-то подобное) [3].

GRADLE(1) Gradle Command Line Manual                                                  
 
NAME
       gradle - адаптируемая автоматизация для всего.
 
SYNOPSIS
       gradle [option...] [task...]
 
OPTIONS
       Полное руководство по командной строке предоставлено на официальном сайте Gradle. У самого проекта
       нет странички руководства, потому что его поддержка приводит к ошибкам и дорогостоящая.
 
       Ниже приведен общий список опций.
 
       -?, -h, --help
           Покажет краткую справку по командной строке.
 
       -a, --no-rebuild (устарело)
           Не выполнять пересборку зависимостей проекта.
 
       --all
           Показать дополнительные подробности в списке задач. См. секцию документации LISTING TASKS.
 
       -b, --build-file
           Указывает файл сборки. См. секцию документации SELECTING BUILD.
 
       --build-cache (в отладке)
           Разрешает кэш сборки Gradle. Gradle будет пытаться повторно использовать выходные файлы,
           сгенерированные предыдущими сборками.
 
       --no-build-cache (в отладке)
           Запрещает кэш сборки Gradle.
 
       -c, --settings-file
           Указывает файл настроек.
 
       --console
           Указывает, какой тип вывода консоли генерировать.
 
           Установите --console plain для генерации чисто текста (plain text). Эта опция запретит
           цветовое оформление сообщений и другие богатые фичи вывода в консоли.
 
           Установите --console auto (по умолчанию), чтобы разрешить цвета текста сообщений
           процесса сборки и другие богатые возможности вывода, когда процесс сборки подключен
           к консоли, или генерации plain text только когда нет подключения к консоли.
 
           Установите --console rich, чтобы разрешить цвета текста сообщений процесса сборки
           и другие богатые возможности вывода независимо от подключения к консоли. Когда нет
           подключения к консоли вывод сборки будет использовать коды управления ANSI для генерации
           символов управления при генерации rich-вывода.
 
           Установите --console verbose чтобы разрешить цвета и другой rich-вывод как с rich,
           но при этом выводить более подробные сообщения (task name, output, и т. д.).
 
       --continue
           Продолжить выполнение task после её ошибки.
 
       --configure-on-demand (в отладке)
           В этом запуске сборки конфигурируются только соответствующие проекты. Это означает
           ускоренную сборку для крупных мультипроектов. См. секцию документации CONFIGURATION ON DEMAND.
 
       --no-configure-on-demand (в отладке)
           Запрет использования конфигурации по запросу.
 
       -D, --system-prop
           Установит системное свойство JVM, например -Dmyprop=myvalue. См. секцию документации
           GRADLE PROPERTIES AND SYSTEM PROPERTIES.
 
       -d, --debug
           Лог в режиме отладки (включая нормальную трассировку стека). См. секцию документации LOGGING.
 
       -g, --gradle-user-home
           Укажет домашний каталог пользователя Gradle. По умолчанию это папка .gradle, которая
           находится в домашнем каталоге пользователя (~/.gradle/).
 
       --include-build
           Запуск сборки как композитной, включающей указанную сборку. См. секцию документации COMPOSITE BUILDS.
 
       -I, --init-script
           Указывает скрипт инициализации. См. секцию документации INIT SCRIPTS.
 
       -i, --info
           Установит уровень лога. См. секцию документации LOGGING.
 
       -m, --dry-run
           Запустит сборку со всеми запрещенными действиями задач (task actions). См. секцию документации
           DRY RUN.
 
       --offline
           Указывает, что сборка должна работать без доступа к сетевым ресурсам. См. секцию документации
           CACHE COMMAND LINE OPTIONS.
 
       -P, --project-prop
           Установит свойство корня проекта, например -Pmyprop=myvalue. См. секцию документации
           GRADLE PROPERTIES AND SYSTEM PROPERTIES.
 
       -p, --project-dir
           Указывает стартовую директорию для Gradle. По умолчанию стартовой является текущая директория.
           См. секцию документации SELECTING BUILD.
 
       --parallel (в отладке)
           Сборка проектов параллельно. Gradle будет пытаться определить оптимальное количество используемых
           потоков для компиляции. Эта опция должна использоваться только для не связанных друг с другом\
           проектов (см. секцию документации DECOUPLED PROJECTS). Описание ограничений для этой опции
           см. секцию документации PARALLEL EXECUTION.
 
       --no-parallel (в отладке)
           Запретит параллельное выполнение сборки проектов.
 
       --max-workers (в отладке)
           Установит максимальное количество worker-ов, которое может использовать Gradle.
           Например --max-workers=3. По умолчанию используется количество процессоров.
 
       --profile
           Профилирует время выполнения сборки и генерирует отчет в директории buildDir/reports/profile.
           См. секцию документации PROFILING BUILD.
 
       --project-cache-dir
           Указывает специфичную для проекта директорию кэша. По умолчанию это папка .gradle в корневой
           директории проекта.
 
       -q, --quiet
           В лог выводятся только ошибки. См. секцию документации LOGGING.
 
       --recompile-scripts (устарело)
           Принудительно перекомпилирует скрипты, пропуская кэш. Эта опция устарела, и должна быть удалена
           в Gradle 5.0. Старайтесь её не использовать.
 
       --refresh-dependencies
           Обновит состояние зависимостей. См. секцию документации CACHE COMMAND LINE OPTIONS.
 
       --rerun-tasks
           Указывает, что любая оптимизация задачи игнорируется.
 
       -S, --full-stacktrace
           Печатает полную (очень подробную) трассировку стека для любых исключений. См. секцию
           документации LOGGING.
 
       -s, --stacktrace
           Печатает трассировку стека также для исключений пользователя (например ошибка компиляции).
           См. секцию документации LOGGING.
 
       --scan (в отладке)
           Создает сканирование сборки. Gradle применит auto-apply для плагина сканирования сборки
           совместимой версии. Для дополнительной информации по сканированиям сборки см.
           https://gradle.com/build-scans.
 
       --no-scan (в отладке)
           Запретит создание сканирования сборки. Для дополнительной информации по сканированиям сборки
           см. https://gradle.com/build-scans.
 
       -t, --continuous (в отладке)
           Разрешает секцию документации CONTINUOUS BUILD,CONTINUOUS BUILDING - Gradle автоматически
           перезапустится, когда определены изменения.
 
       -u, --no-search-upward
           Не искать в родительской директории файл settings.gradle.
 
       -v, --version
           Печать информации версии.
 
       -w, --warn
           Установить уровень лога для предупреждений. См. секцию документации LOGGING.
 
       -x, --exclude-task
           Указывает задачу, исключаемую из выполнения. См. секцию документации EXCLUDING TASKS FROM
           THE COMMAND LINE.
 
           Похожая информация о командах выводится в консоль при выполнении gradle -h.
 
СМ. ТАКЖЕ
       https://docs.gradle.org/current/userguide/command_line_interface.html
 
AUTHORS
       Gradle developers
 
Gradle 4.4.1                                                       2019-12-10

[Ссылки]

1. What is Gradle site:docs.gradle.org.
2. Gradle Wrapper.

 

Добавить комментарий


Защитный код
Обновить

Top of Page