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.