Статья 1: Создание Gradle-плагина с нуля с помощью команды `gradle init
Опубликовано 23 September 2025
Введение
Запуск нового проекта плагина Gradle может показаться пугающим. К счастью, Gradle предоставляет мощный интерактивный помощник, задача`init`, который генерирует полную, чистую и готовую к использованию структуру проекта. Это руководство покажет вам, как использовать этот инструмент для создания здоровой основы плагина, объяснит структуру и покажет, как запустить первые задачи сборки.
Шаг 1: Запустить ассистент проекта
Команда`gradle init`является исходной точкой. Она запускает помощник в командной строке, который задаёт вам серию вопросов для настройки проекта.
Откройте терминал в пустой папке и выполните:
gradle init
Ассистент проведёт вас. Вот варианты, которые нужно выбрать для плагина Gradle, написанного на Kotlin :
-
Выберите тип проекта для генерации:Выберите`Gradle plugin`.
-
Выберите язык реализации:Выберите`Kotlin`.
-
Выберите DSL скрипта сборки:Выберите`Kotlin`.
-
Название проекта:Введите имя для вашего проекта (например:`site-baker`).
-
ID плагина:Дайте вашему плагину уникальный идентификатор (например:`com.cheroliv.site-baker`).
-
Класс плагина:Укажите имя класса реализации (например:`com.cheroliv.SiteBakerPlugin`).
После завершения Gradle генерирует полное дерево файлов.
@startuml start :Lancer `gradle init`; :Choisir "плагин Gradle"; :Choisir "Kotlin" (langage); :Choisir "Kotlin" (DSL); :Saisir nom, ID, et classe; :Projet généré; stop @enduml
Шаг 2 : Понять сгенерированную структуру
Ассистент создает модульную структуру проекта, разделяя корневой проект и исходный код самого плагина.
.
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── plugin/
│ ├── build.gradle.kts
│ └── src/
│ ├── main/
│ │ └── kotlin/
│ │ └── com/cheroliv/SiteBakerPlugin.kt
│ ├── test/
│ │ └── kotlin/
│ │ └── com/cheroliv/SiteBakerPluginTest.kt
│ └── functionalTest/
│ └── kotlin/
│ └── com/cheroliv/SiteBakerPluginFunctionalTest.kt
└── settings.gradle.kts
Ключевые файлы и папки
-
settings.gradle.kts: Этот файл в корне определяет модули, включённые в сборку. Здесь он включает подпроект`plugin`.
[источник,kotlin] Please provide the text you would like me to translate. rootProject.name = "site-baker include("plugin") Please provide the text you would like me to translate.
-
plugin/build.gradle.kts: Это ядро конфигурации вашего плагина. Он применяет плагин`java-gradle-plugin`, объявляет зависимости и настраивает метаданные плагина.
[источник,kotlin] Please provide the text you would like me to translate. plugins { java-gradle-plugin alias(libs.plugins.kotlin.jvm) }
gradlePlugin { val siteBaker by plugins.creating { id = "com.cheroliv.site-baker implementationClass = "com.cheroliv.SiteBakerPlugin } } Please provide the text you would like me to translate.
-
src/main/: Содержит исходный код вашего плагина. -
src/test/: Содержит модульные тесты. Они выполняются быстро и изолированно. -
src/functionalTest/: Содержит функциональные тесты. Эти тесты используют`GradleRunner`для запуска полной версии Gradle в тестовом проекте, имитируя тем самым реальное использование вашего плагина.
Шаг 3: Сборка и тестирование плагина
Сгенерированный проект включает в себяGradle Wrapper(gradlew). Это рекомендуемый способ запуска Gradle, так как он гарантирует, что все разработчики используют одну и ту же версию, обеспечивая воспроизводимость сборок.
Базовые задачи
-
Сборка проекта:
Эта команда компилирует ваш код, запускает все тесты (модульные и функциональные) и собирает JAR-файл вашего плагина. [источник,bash] Please provide the text you would like me to translate. ./gradlew build Please provide the text you would like me to translate.
-
Запустить все проверки:
Задача`check`— это псевдоним, который выполняет все задачи по проверке, включая`test` et `functionalTest`Пожалуйста, предоставьте текст для перевода. [источник,bash] Please provide the text you would like me to translate. ./gradlew check Please provide the text you would like me to translate.
-
Запустить только модульные тесты:
Для быстрого получения обратной связи во время разработки. [источник,bash] Please provide the text you would like me to translate. ./gradlew test Please provide the text you would like me to translate.
|
Команда`./gradlew :test`, который явно нацелен на корневой проект, завершится ошибкой, так как последний не содержит тестов. С другой стороны:
* |
-
Выполнять только функциональные тесты:
Будучи более медленными, они полезны для проверки общего поведения. [источник,bash] Please provide the text you would like me to translate. ./gradlew functionalTest Please provide the text you would like me to translate.
Результат тестов создается в папке`plugin/build/reports/tests/`. Вы можете открыть файл`index.html`в вашем браузере для получения подробного отчета.
Заключение
За несколько минут,`gradle init`предоставил вам солидную, современную и полную базу проекта для разработки вашего плагина. В вашем распоряжении четкая структура, предварительно настроенные модульные и функциональные тесты, а также воспроизводимая система сборки благодаря Gradle Wrapper.
Теперь вы готовы открыть файл`SiteBakerPlugin.kt`и начать добавлять туда бизнес-логику вашего плагина!