Плагин — это не что иное, как набор задач, почти все полезные задачи, такие как компиляция задач, настройка объектов домена, настройка исходных файлов и т. Д., Выполняются плагинами. Применение плагина к проекту означает, что он позволяет расширять возможности проекта. Плагины могут делать такие вещи, как —
- Расширьте базовую модель Gradle (например, добавьте новые элементы DSL, которые можно настроить).
- Настройте проект в соответствии с преобразованиями (например, добавьте новые задачи или настройте разумные значения по умолчанию).
- Применить конкретную конфигурацию (например, добавить организационные репозитории или обеспечить соблюдение стандартов).
Типы плагинов
В Gradle есть два типа плагинов: плагины для скриптов и бинарные плагины. Плагины скриптов — это дополнительный скрипт сборки, который дает декларативный подход к манипулированию сборкой. Обычно это используется в сборке. Бинарные плагины — это классы, которые реализуют интерфейс плагина и применяют программный подход к управлению сборкой. Бинарные плагины могут находиться со скриптом сборки, с иерархией проекта или внешне в JAR плагина.
Применение плагинов
Метод API Project.apply () используется для применения определенного плагина. Вы можете использовать один и тот же плагин несколько раз. Существует два типа плагинов: один — плагин скрипта, а второй — бинарный плагин.
Скриптовые плагины
Плагины сценариев могут быть применены из сценария в локальной файловой системе или в удаленном месте. Расположение файловой системы относится к каталогу проекта, в то время как расположение удаленного сценария указывает URL-адрес HTTP. Взгляните на следующий фрагмент кода. Он используется для применения плагина other.gradle к сценарию сборки. Используйте этот код в файле build.gradle .
apply from: 'other.gradle'
Бинарные плагины
Каждый плагин идентифицируется по идентификатору плагина, так как некоторые основные плагины используют короткие имена для его применения, а некоторые плагины сообщества используют полное имя для идентификатора плагина. Некоторое время это позволяет указать класс плагина.
Взгляните на следующий фрагмент кода. Он показывает, как применить плагин Java, используя его тип. Используйте этот код в файле build.gradle .
apply plugin: JavaPlugin
Посмотрите на следующий код для применения основного плагина, используя короткое имя. Используйте этот код в файле build.gradle .
plugins { id 'java' }
Взгляните на следующий код для применения плагина сообщества с использованием короткого имени. Используйте этот код в файле build.gradle .
plugins { id "com.jfrog.bintray" version "0.4.1" }
Написание пользовательских плагинов
При создании пользовательского плагина вам необходимо написать реализацию плагина. Gradle создает плагин и вызывает экземпляр плагина с помощью метода Plugin.apply (). Следующий пример содержит плагин приветствия, который добавляет задачу приветствия в проект. Посмотрите на следующий код. Используйте этот код в файле build.gradle .
apply plugin: GreetingPlugin class GreetingPlugin implements Plugin<Project> { void apply(Project project) { project.task('hello') << { println "Hello from the GreetingPlugin" } } }
Используйте следующий код для выполнения вышеуказанного сценария.
C:\> gradle -q hello
Выход:
Hello from the GreetingPlugin
Получение информации от сборки
Большинству плагинов требуется поддержка конфигурации из скрипта сборки. У проекта Gradle есть связанный объект ExtensionContainer, который помогает отслеживать все настройки и свойства, передаваемые плагинам.
Давайте добавим простой объект расширения в проект. Здесь мы добавляем объект расширения приветствия в проект, который позволяет настроить приветствие. Используйте этот код в файле build.gradle .
apply plugin: GreetingPlugin greeting.message = 'Hi from Gradle' class GreetingPlugin implements Plugin<Project> { void apply(Project project) { // Add the 'greeting' extension object project.extensions.create("greeting", GreetingPluginExtension) // Add a task that uses the configuration project.task('hello') << { println project.greeting.message } } } class GreetingPluginExtension { def String message = 'Hello from GreetingPlugin' }
Используйте следующий код для выполнения вышеуказанного сценария.
C:\> gradle -q hello
Выход:
Hi from Gradle
В этом примере GreetingPlugin — это простой старый объект Groovy с полем с именем message. Объект расширения добавляется в список плагинов с именем приветствия. Затем этот объект становится доступным как свойство проекта с тем же именем, что и у объекта расширения.
Gradle добавляет закрытие конфигурации для каждого объекта расширения, поэтому вы можете сгруппировать настройки вместе. Посмотрите на следующий код. Используйте этот код в файле build.gradle .
apply plugin: GreetingPlugin greeting { message = 'Hi' greeter = 'Gradle' } class GreetingPlugin implements Plugin<Project> { void apply(Project project) { project.extensions.create("greeting", GreetingPluginExtension) project.task('hello') << { println "${project.greeting.message} from ${project.greeting.greeter}" } } } class GreetingPluginExtension { String message String greeter }
Используйте следующий код для выполнения вышеуказанного сценария.
C:\> gradle -q hello
Выход:
Hello from Gradle
Стандартные плагины Gradle
Существуют различные плагины, которые включены в дистрибутив Gradle.
Языковые плагины
Эти плагины добавляют поддержку различных языков, которые могут быть скомпилированы и выполнены в JVM.
Идентификатор плагина | Автоматически применяется | Описание |
---|---|---|
Джава | Java-база | Добавляет в проект возможности компиляции, тестирования и связывания Java. Он служит основой для многих других плагинов Gradle. |
заводной | Java, заводная база | Добавлена поддержка построения Groovy проектов. |
Скала | Java, Scala-база | Добавлена поддержка для построения проектов Scala. |
ANTLR | Джава | Добавлена поддержка генерации парсеров с использованием Antlr. |
Инкубация языковых плагинов
Эти плагины добавляют поддержку различных языков.