Глава 17. Плагин инициализации сборки.

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

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

Плагины Gradle обычно нужно применять к проекту до его использования (смотрите Секцию 27.3 Использование плагинов). Плагин инициализации сборки - автоматически применяемый плагин, это значит, что вам нет необходимости применять его явно. Для использования плагина, просто выполните задачу init в том месте, где вы собираетесь создать сборку Gradle. Не нужно создавать "заглушку" файла build.gradle для применения плагина.

Этот плагин опирается на задачу wrapper из плагина Wrapper (смотрите Главу 23 Плагин Wrapper) и это значит, что Gradle Wrapper будет установлен в проект.

17.1 Задачи.

Плагин добавляет следующие задачи в проект:

Таблица 17.1. Задачи плагина инициализации сборки
Имя задачиЗависит отТипОписание
initwrapperInitBuildГенерирует проект Gradle
wrapper-WrapperГенерирует файлы Gradle Wrapper'а

17.2 Что настраивать.

Задача init поддерживает различные типы установки сборок. Тип определяется передачей значения аргументу --type. Например, для создания проекта библиотеки Java просто выполните: gradle init --type java-library.

Если параметр --type не предоставлен, Gradle попытается вывести тип из окружения. Например, он выведет значение типа 'pom', если найдет pom.xml при преобразовании в сборку Gradle.

Если тип не может быть выведен, то используется тип 'basic'.

Все типы установки сборок включают установку Gradle Wrapper'а.

17.3 Типы инициализации сборки.

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

17.3.1. 'pom' (преобразование Maven).

Тип 'pom' может быть использован для преобразования сборки Apache Maven в сборку Gradle. Это делается с помощью преобразования POM в один или несколько файлов Gradle. Использование этого типа доступно в том случае, если в папке, где выполнена задача init, существует допустимый файл 'pom.xml' или, если она выполнена с помощью опции командной строки '-p', в указанной папке проекта. Тип 'pom' будет автоматически выведен, если такой файл существует.

Преобразование проекта Maven было вдохновлено инструментом maven2gradle, который изначально был разработан членами сообщества Gradle.

У процесса преобразования следующие особенности:

  • Используется эффективный POM или эффективные настройки (поддерживает наследование POM, управление зависимостями, свойства).
  • Поддерживает проекты одиночного модули и многомодульные.
  • Поддерживает пользовательские имена модулей (которые отличаются от имен папок).
  • Генерирует общие метаданные - id (идентификатор), description (описание) и version (версию).
  • Применяет плагины maven, java и war (если необходимо).
  • Поддерживает упаковку проектов war в jar-файлы, если необходимо.
  • Генерирует зависимости (внешние и межмодульные).
  • Генерирует хранилища загрузки (локальное хранилище Maven).
  • Подгоняет настройки компилятора Java.
  • Поддерживает упаковку исходных кодов и тестов.
  • Поддерживает 'запускатель' TestNG.
  • Генерирует глобальные исключения из настроек плагина Maven enforcer.

17.3.2. 'java-приложение'.

Тип инициализации сборки 'java-приложение' - невыводимый. Его нужно указывать явно.

У него следующие особенности:

  • Использует плагин 'application' для создания приложения командной строки, реализованного с использованием Java.
  • Использует хранилище зависимостей 'jcenter'.
  • Использует JUnit для тестирования.
  • Есть папки в общепринятых местоположениях для исходного кода.
  • Содержит образец класса и юнит-теста, если не существует исходных кодов или тестовых файлов.

Альтернативный тестовый фреймворк может указать, передав значение аргументу --test-framework. Для использования отличного тестового фреймворка, выполните одну из следующих команд:

  • gradle init --type java-application --test-framework spock: Использует Spock для тестирования вместо JUnit.
  • gradle init --type java-application --test-framework testng: Использует TestNG для тестирования вместо JUnit.

17.3.3. 'java-библиотека'.

Тип инициализации сборки 'java-библиотека' - невыводимый. Его нужно указывать явно.

У него следующие особенности:

  • Использует плагин 'java' для получения библиотеки jar.
  • Использует хранилище зависимостей 'jcenter'.
  • Использует JUnit для тестирования.
  • Содержит образец класса и юнит-теста, если не существует исходных кодов или тестовых файлов.

Альтернативный тестовый фреймворк может указать, передав значение аргументу --test-framework. Для использования отличного тестового фреймворка, выполните одну из следующих команд:

  • gradle init --type java-application --test-framework spock: Использует Spock для тестирования вместо JUnit.
  • gradle init --type java-application --test-framework testng: Использует TestNG для тестирования вместо JUnit.

17.3.4. 'scala-библиотека'.

Тип инициализации сборки 'scala-библиотека' - невыводимый. Его нужно указывать явно.

У него следующие особенности:

  • Использует плагин 'scala' для получения библиотеки jar.
  • Использует хранилище зависимостей 'jcenter'.
  • Использует Scala 2.10.
  • Использует ScalaTest для тестирования.
  • Есть папки в общепринятых местоположениях для исходного кода.
  • Содержит образец scala-класса и связанный тестовый комплект ScalaTest, если не существует исходных кодов или тестовых файлов.
  • По умолчанию использует компилятор Zinc Scala.

17.3.5. 'groovy-библиотека'.

Тип инициализации сборки 'groovy-библиотека' - невыводимый. Его нужно указывать явно.

У него следующие особенности:

  • Использует плагин 'groovy' для получения библиотеки jar.
  • Использует хранилище зависимостей 'jcenter'.
  • Использует Groovy 2.x.
  • Использует тестовый фрейморк Spock для тестирования.
  • Есть папки в общепринятых местоположениях для исходного кода.
  • Содержит образец Groovy-класса и связанную спецификацию Spock, если не существует исходных кодов или тестовых файлов.

17.3.6. 'basic'.

Тип инициализации сборки 'basic' полезен при создании нового проекта Gradle. Он создает примерный файл build.gradle, с комментариями и ссылками, которые помогают начать работу.

Этот тип используется, если явно не указан тип и никакой другой тип не выведен.