Gradle - Plugins
Plugin nada mais é do que um conjunto de tarefas, quase todas as tarefas úteis, como compilar tarefas, definir objetos de domínio, configurar arquivos de origem, etc., são gerenciadas por plug-ins. Aplicar um plugin a um projeto significa que permite que o plugin estenda as capacidades do projeto. Os plug-ins podem fazer coisas como -
- Estenda o modelo básico do Gradle (por exemplo, adicione novos elementos DSL que podem ser configurados).
- Configure o projeto de acordo com as conversões (por exemplo, adicione novas tarefas ou configure padrões razoáveis).
- Aplicar configuração específica (por exemplo, adicionar repositórios organizacionais ou impor padrões).
Tipos de Plugins
Existem dois tipos de plug-ins no Gradle: plug-ins de script e plug-ins binários. Os plug-ins de script são um script de construção adicional que fornece uma abordagem declarativa para manipular a construção. Isso normalmente é usado em uma construção. Plug-ins binários são as classes que implementam a interface do plug-in e adotam uma abordagem programática para manipular a construção. Plug-ins binários podem residir com um script de construção, com a hierarquia do projeto ou externamente em um JAR de plug-in.
Aplicando Plugins
Project.apply()O método API é usado para aplicar o plugin específico. Você pode usar o mesmo plugin várias vezes. Existem dois tipos de plug-ins, um é o plug-in de script e o segundo é o plug-in binário.
Plugins de script
Os plug-ins de script podem ser aplicados a partir de um script no sistema de arquivos local ou em um local remoto. As localizações do sistema de arquivos são relativas ao diretório do projeto, enquanto as localizações remotas do script especificam o URL HTTP. Dê uma olhada no seguinte trecho de código. É usado para aplicar oother.gradleplugin para o script de construção. Use este código embuild.gradle Arquivo.
apply from: 'other.gradle'
Plugins Binários
Cada plug-in é identificado pelo id do plug-in, alguns plug-ins principais estão usando nomes curtos para aplicá-lo e alguns plug-ins da comunidade estão usando um nome totalmente qualificado para o id do plug-in. Algum tempo permite especificar a classe do plugin.
Dê uma olhada no seguinte trecho de código. Mostra como aplicar o plugin java usando seu tipo. Use este código embuild.gradle Arquivo.
apply plugin: JavaPlugin
Dê uma olhada no código a seguir para aplicar o plugin principal usando um nome curto. Use este código embuild.gradle Arquivo.
plugins {
id 'java'
}
Dê uma olhada no código a seguir para aplicar o plugin da comunidade usando um nome curto. Use este código embuild.gradle Arquivo.
plugins {
id "com.jfrog.bintray" version "0.4.1"
}
Escrevendo plug-ins personalizados
Ao criar um plugin personalizado, você precisa escrever uma implementação do plugin. O Gradle instancia o plug-in e chama a instância do plug-in usando o método Plugin.apply (). O exemplo a seguir contém um plug-in de saudação, que adiciona uma tarefa hello ao projeto. Dê uma olhada no código a seguir. Use este código embuild.gradle Arquivo.
apply plugin: GreetingPlugin
class GreetingPlugin implements Plugin<Project> {
void apply(Project project) {
project.task('hello') << {
println "Hello from the GreetingPlugin"
}
}
}
Use o código a seguir para executar o script acima.
C:\> gradle -q hello
Resultado:
Hello from the GreetingPlugin
Obtendo informações do Build
A maioria dos plug-ins precisa do suporte de configuração do script de construção. O projeto Gradle tem um objeto ExtensionContainer associado que ajuda a rastrear todas as configurações e propriedades transmitidas aos plug-ins.
Vamos adicionar um objeto de extensão simples ao projeto. Aqui, adicionamos um objeto de extensão de saudação ao projeto, o que permite configurar a saudação. Use este código embuild.gradle Arquivo.
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'
}
Use o código a seguir para executar o script acima.
C:\> gradle -q hello
Resultado:
Hi from Gradle
Neste exemplo, GreetingPlugin é um objeto Groovy antigo e simples com um campo chamado mensagem. O objeto de extensão é adicionado à lista de plug-ins com o nome saudação. Este objeto então se torna disponível como uma propriedade do projeto com o mesmo nome do objeto de extensão.
O Gradle adiciona um fechamento de configuração para cada objeto de extensão, para que você possa agrupar as configurações. Dê uma olhada no código a seguir. Use este código embuild.gradle Arquivo.
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
}
Use o código a seguir para executar o script acima.
C:\> gradle -q hello
Resultado:
Hello from Gradle
Plug-ins Gradle padrão
Existem diferentes plug-ins incluídos na distribuição do Gradle.
Plugins de linguagem
Esses plug-ins adicionam suporte para várias linguagens que podem ser compiladas e executadas na JVM.
Id do plugin | Aplica-se Automaticamente | Descrição |
---|---|---|
Java | java-base | Adiciona recursos de compilação, teste e agrupamento Java a um projeto. Ele serve como base para muitos dos outros plug-ins do Gradle. |
descolado | java, groovy-base | Adiciona suporte para a construção de projetos Groovy. |
escala | java, scala-base | Adiciona suporte para a construção de projetos Scala. |
antlr | Java | Adiciona suporte para gerar analisadores usando Antlr. |
Incubando Plugins de Linguagem
Esses plug-ins adicionam suporte para vários idiomas.
Id do plugin | Aplica-se Automaticamente | Descrição |
---|---|---|
montador | - | Adiciona recursos de linguagem assembly nativa a um projeto. |
c | - | Adiciona recursos de compilação de origem C a um projeto. |
cpp | - | Adiciona recursos de compilação de origem C ++ a um projeto. |
objetivo-c | - | Adiciona recursos de compilação de origem Objective-C a um projeto. |
objetivo-cpp | - | Adiciona recursos de compilação de origem Objective-C ++ a um projeto. |
recursos do Windows | - | Adiciona suporte para incluir recursos do Windows em binários nativos. |