Gradle - Plugins

Das Plugin ist nichts anderes als eine Reihe von Aufgaben. Fast alle nützlichen Aufgaben wie das Kompilieren von Aufgaben, das Festlegen von Domänenobjekten, das Einrichten von Quelldateien usw. werden von Plugins ausgeführt. Das Anwenden eines Plugins auf ein Projekt bedeutet, dass das Plugin die Funktionen des Projekts erweitern kann. Die Plugins können folgende Aufgaben ausführen:

  • Erweitern Sie das grundlegende Gradle-Modell (z. B. fügen Sie neue DSL-Elemente hinzu, die konfiguriert werden können).
  • Konfigurieren Sie das Projekt entsprechend den Konvertierungen (z. B. neue Aufgaben hinzufügen oder sinnvolle Standardeinstellungen konfigurieren).
  • Wenden Sie eine bestimmte Konfiguration an (z. B. organisatorische Repositorys hinzufügen oder Standards durchsetzen).

Arten von Plugins

In Gradle gibt es zwei Arten von Plugins: Skript-Plugins und Binär-Plugins. Skript-Plugins sind ein zusätzliches Build-Skript, das einen deklarativen Ansatz für die Bearbeitung des Builds bietet. Dies wird normalerweise in einem Build verwendet. Binäre Plugins sind die Klassen, die die Plugin-Schnittstelle implementieren und einen programmatischen Ansatz zur Manipulation des Builds verfolgen. Binäre Plugins können sich in einem Build-Skript, in der Projekthierarchie oder extern in einer Plugin-JAR befinden.

Plugins anwenden

Project.apply()Die API-Methode wird verwendet, um das jeweilige Plugin anzuwenden. Sie können dasselbe Plugin mehrmals verwenden. Es gibt zwei Arten von Plugins: das Skript-Plugin und das Binär-Plugin.

Skript-Plugins

Skript-Plugins können über ein Skript im lokalen Dateisystem oder an einem Remotestandort angewendet werden. Dateisystemspeicherorte sind relativ zum Projektverzeichnis, während Remoteskriptspeicherorte die HTTP-URL angeben. Schauen Sie sich das folgende Code-Snippet an. Es wird verwendet, um die anzuwendenother.gradlePlugin zum Build-Skript. Verwenden Sie diesen Code inbuild.gradle Datei.

apply from: 'other.gradle'

Binäre Plugins

Jedes Plugin wird durch die Plugin-ID identifiziert. Einige Kern-Plugins verwenden Kurznamen, um es anzuwenden, und einige Community-Plugins verwenden einen vollständig qualifizierten Namen für die Plugin-ID. Einige Zeit erlaubt es, die Klasse des Plugins anzugeben.

Schauen Sie sich das folgende Code-Snippet an. Es zeigt, wie Sie das Java-Plugin mithilfe seines Typs anwenden. Verwenden Sie diesen Code inbuild.gradle Datei.

apply plugin: JavaPlugin

Sehen Sie sich den folgenden Code zum Anwenden des Core-Plugins mit Kurznamen an. Verwenden Sie diesen Code inbuild.gradle Datei.

plugins {
   id 'java'
}

Sehen Sie sich den folgenden Code zum Anwenden des Community-Plugins mit Kurznamen an. Verwenden Sie diesen Code inbuild.gradle Datei.

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

Benutzerdefinierte Plugins schreiben

Beim Erstellen eines benutzerdefinierten Plugins müssen Sie eine Implementierung des Plugins schreiben. Gradle instanziiert das Plugin und ruft die Plugin-Instanz mit der Plugin.apply () -Methode auf. Das folgende Beispiel enthält ein Begrüßungs-Plugin, das dem Projekt eine Hallo-Aufgabe hinzufügt. Schauen Sie sich den folgenden Code an. Verwenden Sie diesen Code inbuild.gradle Datei.

apply plugin: GreetingPlugin

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

Verwenden Sie den folgenden Code, um das obige Skript auszuführen.

C:\> gradle -q hello

Ausgabe:

Hello from the GreetingPlugin

Eingaben vom Build abrufen

Die meisten Plugins benötigen die Konfigurationsunterstützung aus dem Build-Skript. Dem Gradle-Projekt ist ein ExtensionContainer-Objekt zugeordnet, mit dessen Hilfe alle Einstellungen und Eigenschaften verfolgt werden können, die an Plugins übergeben werden.

Fügen wir dem Projekt ein einfaches Erweiterungsobjekt hinzu. Hier fügen wir dem Projekt ein Begrüßungserweiterungsobjekt hinzu, mit dem Sie die Begrüßung konfigurieren können. Verwenden Sie diesen Code inbuild.gradle Datei.

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

Verwenden Sie den folgenden Code, um das obige Skript auszuführen.

C:\> gradle -q hello

Ausgabe:

Hi from Gradle

In diesem Beispiel ist GreetingPlugin ein einfaches altes Groovy-Objekt mit einem Feld namens message. Das Erweiterungsobjekt wird der Plugin-Liste mit dem Namen Begrüßung hinzugefügt. Dieses Objekt wird dann als Projekteigenschaft mit demselben Namen wie das Erweiterungsobjekt verfügbar.

Gradle fügt für jedes Erweiterungsobjekt einen Konfigurationsabschluss hinzu, sodass Sie die Einstellungen zusammenfassen können. Schauen Sie sich den folgenden Code an. Verwenden Sie diesen Code inbuild.gradle Datei.

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
}

Verwenden Sie den folgenden Code, um das obige Skript auszuführen.

C:\> gradle -q hello

Ausgabe:

Hello from Gradle

Standard Gradle Plugins

Es gibt verschiedene Plugins, die in der Gradle-Distribution enthalten sind.

Sprach-Plugins

Diese Plugins bieten Unterstützung für verschiedene Sprachen, die in der JVM kompiliert und ausgeführt werden können.

Plugin ID Gilt automatisch Beschreibung
Java Java-Basis Fügt einem Projekt Java-Kompilierungs-, Test- und Bündelungsfunktionen hinzu. Es dient als Basis für viele andere Gradle-Plugins.
groovig Java, Groovy-Base Fügt Unterstützung für das Erstellen von Groovy-Projekten hinzu.
Scala Java, Scala-Basis Fügt Unterstützung für das Erstellen von Scala-Projekten hinzu.
antlr Java Fügt Unterstützung für das Generieren von Parsern mit Antlr hinzu.

Inkubation von Sprach-Plugins

Diese Plugins bieten Unterstützung für verschiedene Sprachen.

Plugin ID Gilt automatisch Beschreibung
Assembler - - Fügt einem Projekt native Assembler-Funktionen hinzu.
c - - Fügt einem Projekt C-Quellkompilierungsfunktionen hinzu.
cpp - - Fügt einem Projekt C ++ - Quellkompilierungsfunktionen hinzu.
Ziel c - - Fügt einem Projekt Objective-C-Quellkompilierungsfunktionen hinzu.
objektiv-cpp - - Fügt einem Projekt Objective-C ++ - Quellkompilierungsfunktionen hinzu.
Windows-Ressourcen - - Fügt Unterstützung für das Einfügen von Windows-Ressourcen in native Binärdateien hinzu.