Gradle "без боли" / Почему Kotlin DSL? / Пишем плагины - Осип Фаткуллин
red_mad_robot Android
0:00 / 0:00
Gradle "без боли" / Почему Kotlin DSL? / Пишем плагины - Осип Фаткуллин
5 939 просмотров · 5 л. назад
red_mad_robot Android
165 подписчиков
5 939 просмотров · 5 л. назад
Разбираемся для чего нужен Gradle, чем же плох Groovy и почему мы в red_mad_robot MSK переехали на Kotlin DSL. Разбираем какие есть неочевидные APIшки в Gradle про которые точно нужно знать если собираетесь писать плагины. А ещё будет много практики!
Первый час - теоретическая часть, остальные полтора часа - практическая (livecoding).
NOTE: Подразумевается, что вы уже умеете писать build-скрипты Gradle, но ещё не умеете писать плагины. Или хотите переехать с Groovy на Kotlin.
Ссылки из презентации:
Groovy - спецификация языка:
http://www.groovy-lang.org/documentat...
Gradle Kotlin DSL Primer - как использовать Kotlin DSL и как на него мигрировать с Groovy:
https://docs.gradle.org/current/userg...
Gradle Initialization Scripts - зачем нужны скрипты инициализации и как их писать:
https://docs.gradle.org/current/userg...
Existing vs New API overview - какие API нужно использовать, чтобы работала Configuration Avoidance:
https://docs.gradle.org/current/userg...
Developing Custom Gradle Plugins - первая статья из раздела "Extending Gradle". Но вообще нужно прочитать весь раздел, чтобы писать плагины правильно:
https://docs.gradle.org/current/userg...
Теоретическая часть:
00:00:00 - О чем будем говорить
00:00:54 - Есть ли жизнь без систем сборки?
00:04:39 - Немного истории
00:07:08 - Появление Gradle и что это нам даёт?
00:09:14 - Groovy (не) помогает, Функции
00:12:10 - Groovy: Строки и типизация
00:15:50 - Groovy: Динамические вызовы
00:19:32 - Почему Kotlin DSL?
00:21:18 - Пример миграции на Kotlin DSL
00:23:04 - Kotlin DSL: Accessors и "динамические" вызовы
00:26:21 - Kotlin DSL: Миграция extras
00:30:15 - Основные сущности Gradle
00:33:16 - Gradle: Plugin и Task
00:35:34 - ЖЦ сборки Gradle: Инициализация
00:37:13 - ЖЦ сборки Gradle: Конфигурация и выполнение
00:38:48 - Оптимизация этапа конфигурации
00:42:54 - Lazy Properties
00:46:04 - Подробнее о Configuration Avoidance
00:48:38 - Кэширование выполнения задач
Практическая часть (livecoding):
00:50:40 - Переходим к практике
00:52:27 - Что будем делать
00:54:46 - Подготавливаем buildSrc
00:56:20 - Первый Precompiled Script Plugin и первые трудности
01:06:06 - Применяем Precompiled Script Plugin
01:10:22 - Выносим конфигурацию Kotlin
01:19:52 - Заставляем accessor'ы работать
01:23:44 - Выносим общие конфиги Android
01:29:28 - Создаём конфиг для версий SDK
01:36:35 - Ошибки при создании экстеншенов
01:39:19 - Managed Types - Gradle всё создаст за нас
01:41:48 - Добиваемся генерации accessor'а для экстеншена
01:45:41 - Используем конфиг в плагине
01:55:08 - Про порядок конфигурации и использования настроек
02:00:08 - Создаём task для инкремента версии
02:06:26 - Используем созданный task
02:09:27 - Прикручиваем кэширование к нашей задачке
02:13:28 - Добавляем Internal опцию
02:15:47 - Делаем цепочку из задач
02:20:09 - А теперь улучшаем цепочку
02:21:53 - Gradle Infrastructure