Введение

Целевая аудитория: начинающий и средний разработчик с Gradle.

Запуск нового проекта плагина Gradle может показаться пугающим. К счастью, Gradle предоставляет мощный интерактивный помощник, задача`init`, который генерирует полную, чистую и готовую к использованию структуру проекта. Это руководство покажет вам, как использовать этот инструмент для создания здоровой основы плагина, объяснит структуру и покажет, как запустить первые задачи сборки.

Шаг 1: Запустить ассистент проекта

Команда`gradle init`является исходной точкой. Она запускает помощник в командной строке, который задаёт вам серию вопросов для настройки проекта.

Откройте терминал в пустой папке и выполните:

gradle init

Ассистент проведёт вас. Вот варианты, которые нужно выбрать для плагина Gradle, написанного на Kotlin :

  1. Выберите тип проекта для генерации:Выберите`Gradle plugin`.

  2. Выберите язык реализации:Выберите`Kotlin`.

  3. Выберите DSL скрипта сборки:Выберите`Kotlin`.

  4. Название проекта:Введите имя для вашего проекта (например:`site-baker`).

  5. ID плагина:Дайте вашему плагину уникальный идентификатор (например:`com.cheroliv.site-baker`).

  6. Класс плагина:Укажите имя класса реализации (например:`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`, который явно нацелен на корневой проект, завершится ошибкой, так как последний не содержит тестов. С другой стороны: * ./gradlew test`работает, потому что Gradle выполняет задачу`test`во всех подпроектах, которые ею обладают (в данном случае, модуль`plugin). * ./gradlew :plugin:test— это самая явная команда для запуска тестов модуля`plugin`только.

  • Выполнять только функциональные тесты:

Будучи более медленными, они полезны для проверки общего поведения. [источник,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`и начать добавлять туда бизнес-логику вашего плагина!

Похожие статьи