Gradle - Plugin

Il plug-in non è altro che un insieme di attività, quasi tutte le attività utili come la compilazione di attività, l'impostazione di oggetti di dominio, l'impostazione di file sorgente, ecc. Sono gestite dai plug-in. Applicare un plug-in a un progetto significa che consente al plug-in di estendere le capacità del progetto. I plugin possono fare cose come:

  • Estendi il modello Gradle di base (es. Aggiungi nuovi elementi DSL che possono essere configurati).
  • Configurare il progetto in base alle conversioni (ad esempio, aggiungere nuove attività o configurare valori predefiniti ragionevoli).
  • Applicare una configurazione specifica (ad esempio, aggiungere archivi aziendali o applicare standard).

Tipi di plugin

Esistono due tipi di plug-in in Gradle, plug-in di script e plug-in binari. I plugin di script sono uno script di build aggiuntivo che fornisce un approccio dichiarativo alla manipolazione della build. Questo è in genere utilizzato all'interno di una build. I plugin binari sono le classi che implementano l'interfaccia del plugin e adottano un approccio programmatico per manipolare la compilazione. I plugin binari possono risiedere con uno script di compilazione, con la gerarchia del progetto o esternamente in un JAR di plugin.

Applicazione di plugin

Project.apply()Il metodo API viene utilizzato per applicare il particolare plugin. Puoi utilizzare lo stesso plug-in più volte. Esistono due tipi di plug-in uno è il plug-in di script e il secondo è il plug-in binario.

Plugin di script

I plugin di script possono essere applicati da uno script sul file system locale o da una posizione remota. Le posizioni del file system sono relative alla directory del progetto, mentre le posizioni degli script remoti specificano l'URL HTTP. Dai un'occhiata al seguente frammento di codice. Viene utilizzato per applicare ilother.gradleplugin per lo script di compilazione. Usa questo codice inbuild.gradle file.

apply from: 'other.gradle'

Plugin binari

Ogni plug-in è identificato dall'id plug-in in quelli che alcuni plug-in principali utilizzano nomi brevi per applicarlo e alcuni plug-in della community utilizzano un nome completo per l'ID plug-in. Qualche volta permette di specificare la classe del plugin.

Dai un'occhiata al seguente frammento di codice. Mostra come applicare il plugin java usando il suo tipo. Usa questo codice inbuild.gradle file.

apply plugin: JavaPlugin

Dai un'occhiata al seguente codice per applicare il plugin principale usando un nome breve. Usa questo codice inbuild.gradle file.

plugins {
   id 'java'
}

Dai un'occhiata al seguente codice per applicare il plugin della community utilizzando un nome breve. Usa questo codice inbuild.gradle file.

plugins {
   id "com.jfrog.bintray" version "0.4.1"
}

Scrittura di plugin personalizzati

Durante la creazione di un plug-in personalizzato, è necessario scrivere un'implementazione del plug-in. Gradle crea un'istanza del plug-in e chiama l'istanza del plug-in utilizzando il metodo Plugin.apply (). L'esempio seguente contiene un plug-in di saluto, che aggiunge un'attività hello al progetto. Dai un'occhiata al seguente codice. Usa questo codice inbuild.gradle file.

apply plugin: GreetingPlugin

class GreetingPlugin implements Plugin<Project> {
   void apply(Project project) {
      project.task('hello') << {
         println "Hello from the GreetingPlugin"
      }
   }
}

Usa il codice seguente per eseguire lo script precedente.

C:\> gradle -q hello

Produzione:

Hello from the GreetingPlugin

Ottenere input dalla build

La maggior parte dei plugin necessita del supporto di configurazione dallo script di compilazione. Il progetto Gradle ha un oggetto ExtensionContainer associato che aiuta a tenere traccia di tutte le impostazioni e le proprietà passate ai plug-in.

Aggiungiamo un semplice oggetto estensione al progetto. Qui aggiungiamo un oggetto di estensione saluto al progetto, che consente di configurare il saluto. Usa questo codice inbuild.gradle file.

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'
}

Usa il codice seguente per eseguire lo script precedente.

C:\> gradle -q hello

Produzione:

Hi from Gradle

In questo esempio, GreetingPlugin è un semplice vecchio oggetto Groovy con un campo chiamato messaggio. L'oggetto estensione viene aggiunto all'elenco dei plugin con il nome saluto. Questo oggetto diventa quindi disponibile come proprietà del progetto con lo stesso nome dell'oggetto estensione.

Gradle aggiunge una chiusura della configurazione per ogni oggetto di estensione, in modo da poter raggruppare le impostazioni insieme. Dai un'occhiata al seguente codice. Usa questo codice inbuild.gradle file.

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
}

Usa il codice seguente per eseguire lo script precedente.

C:\> gradle -q hello

Produzione:

Hello from Gradle

Plugin Gradle standard

Ci sono diversi plugin che sono inclusi nella distribuzione Gradle.

Plugin di lingua

Questi plugin aggiungono il supporto per vari linguaggi che possono essere compilati ed eseguiti nella JVM.

ID plug-in Si applica automaticamente Descrizione
Giava java-base Aggiunge funzionalità di compilazione, test e raggruppamento Java a un progetto. Serve come base per molti degli altri plugin Gradle.
groovy java, groovy-base Aggiunge il supporto per la creazione di progetti Groovy.
scala java, scala-base Aggiunge il supporto per la creazione di progetti Scala.
antlr Giava Aggiunge il supporto per la generazione di parser utilizzando Antlr.

Incubazione dei plugin di lingua

Questi plugin aggiungono il supporto per varie lingue.

ID plug-in Si applica automaticamente Descrizione
assemblatore - Aggiunge funzionalità in linguaggio assembly nativo a un progetto.
c - Aggiunge capacità di compilazione di sorgenti C a un progetto.
cpp - Aggiunge funzionalità di compilazione del codice sorgente C ++ a un progetto.
obiettivo-c - Aggiunge funzionalità di compilazione del codice sorgente Objective-C a un progetto.
obiettivo-cpp - Aggiunge funzionalità di compilazione del codice sorgente Objective-C ++ a un progetto.
risorse di Windows - Aggiunge il supporto per l'inclusione di risorse Windows nei file binari nativi.