Gradle - Плагины
Плагин - это не что иное, как набор задач, почти все полезные задачи, такие как компиляция задач, установка объектов домена, настройка исходных файлов и т. Д., Выполняются плагинами. Применение плагина к проекту означает, что он позволяет расширять возможности проекта. Плагины могут делать такие вещи, как -
- Расширьте базовую модель Gradle (например, добавьте новые элементы DSL, которые можно настроить).
- Настройте проект в соответствии с преобразованиями (например, добавьте новые задачи или настройте разумные значения по умолчанию).
- Примените определенную конфигурацию (например, добавьте репозитории организации или обеспечьте соблюдение стандартов).
Типы плагинов
В Gradle есть два типа плагинов: плагины скриптов и бинарные плагины. Плагины скрипта - это дополнительный скрипт сборки, который дает декларативный подход к управлению сборкой. Обычно это используется в сборке. Двоичные плагины - это классы, реализующие интерфейс плагина и применяющие программный подход к управлению сборкой. Двоичные плагины могут находиться в сценарии сборки, в иерархии проекта или извне в JAR плагина.
Применение плагинов
Project.apply()Метод API используется для применения конкретного плагина. Вы можете использовать один и тот же плагин несколько раз. Есть два типа плагинов: один - скриптовый, а второй - бинарный.
Плагины скриптов
Плагины сценария можно применять из сценария в локальной файловой системе или в удаленном месте. Расположение файловой системы зависит от каталога проекта, а расположение удаленных сценариев указывает 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-base | Добавляет в проект возможности компиляции, тестирования и объединения Java. Он служит основой для многих других плагинов Gradle. |
заводной | Java, Groovy-base | Добавляет поддержку для создания проектов Groovy. |
Scala | java, scala-base | Добавляет поддержку для создания проектов Scala. |
Antlr | Ява | Добавляет поддержку генерации парсеров с помощью Antlr. |
Инкубационные языковые плагины
Эти плагины добавляют поддержку различных языков.
Идентификатор плагина | Применяется автоматически | Описание |
---|---|---|
ассемблер | - | Добавляет в проект возможности родного языка ассемблера. |
c | - | Добавляет в проект возможности компиляции исходного кода C. |
cpp | - | Добавляет в проект возможности компиляции исходного кода C ++. |
цель-c | - | Добавляет в проект возможности компиляции исходного кода Objective-C. |
цель-cpp | - | Добавляет в проект возможности компиляции исходного кода Objective-C ++. |
Windows-ресурсы | - | Добавляет поддержку включения ресурсов Windows в собственные двоичные файлы. |