Gradle - Plugins

Le plugin n'est rien d'autre qu'un ensemble de tâches, presque toutes les tâches utiles telles que la compilation des tâches, la définition des objets de domaine, la configuration des fichiers source, etc. sont gérées par des plugins. L'application d'un plugin à un projet permet au plugin d'étendre les capacités du projet. Les plugins peuvent faire des choses telles que -

  • Étendez le modèle de base Gradle (par exemple, ajoutez de nouveaux éléments DSL qui peuvent être configurés).
  • Configurez le projet en fonction des conversions (par exemple, ajoutez de nouvelles tâches ou configurez des valeurs par défaut sensibles).
  • Appliquer une configuration spécifique (par exemple, ajouter des référentiels organisationnels ou appliquer des normes).

Types de plugins

Il existe deux types de plugins dans Gradle, les plugins de script et les plugins binaires. Les plugins de script sont un script de construction supplémentaire qui donne une approche déclarative de la manipulation de la construction. Ceci est généralement utilisé dans une construction. Les plugins binaires sont les classes qui implémentent l'interface du plugin et adoptent une approche programmatique pour manipuler la construction. Les plugins binaires peuvent résider avec un script de construction, avec la hiérarchie du projet ou en externe dans un plugin JAR.

Application de plugins

Project.apply()La méthode API est utilisée pour appliquer le plugin particulier. Vous pouvez utiliser le même plugin plusieurs fois. Il existe deux types de plugins, l'un est le plugin de script et le second est le plugin binaire.

Plugins de script

Les plugins de script peuvent être appliqués à partir d'un script sur le système de fichiers local ou à un emplacement distant. Les emplacements du système de fichiers sont relatifs au répertoire du projet, tandis que les emplacements des scripts distants spécifient l'URL HTTP. Jetez un œil à l'extrait de code suivant. Il est utilisé pour appliquer leother.gradleplugin au script de construction. Utilisez ce code dansbuild.gradle fichier.

apply from: 'other.gradle'

Plugins binaires

Chaque plugin est identifié par l'identifiant du plugin dans certains plugins de base utilisent des noms courts pour l'appliquer et certains plugins de la communauté utilisent un nom complet pour l'identifiant du plugin. Quelque temps cela permet de spécifier la classe du plugin.

Jetez un œil à l'extrait de code suivant. Il montre comment appliquer le plugin java en utilisant son type. Utilisez ce code dansbuild.gradle fichier.

apply plugin: JavaPlugin

Jetez un œil au code suivant pour appliquer le plugin principal en utilisant un nom court. Utilisez ce code dansbuild.gradle fichier.

plugins {
   id 'java'
}

Jetez un œil au code suivant pour appliquer le plugin communautaire en utilisant un nom court. Utilisez ce code dansbuild.gradle fichier.

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

Ecrire des plugins personnalisés

Lors de la création d'un plugin personnalisé, vous devez écrire une implémentation du plugin. Gradle instancie le plugin et appelle l'instance du plugin en utilisant la méthode Plugin.apply (). L'exemple suivant contient un plugin de salutation, qui ajoute une tâche Hello au projet. Jetez un œil au code suivant. Utilisez ce code dansbuild.gradle fichier.

apply plugin: GreetingPlugin

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

Utilisez le code suivant pour exécuter le script ci-dessus.

C:\> gradle -q hello

Production:

Hello from the GreetingPlugin

Obtenir des entrées de la construction

La plupart des plugins ont besoin du support de configuration du script de construction. Le projet Gradle a un objet ExtensionContainer associé qui permet de suivre tous les paramètres et propriétés transmis aux plugins.

Ajoutons un objet d'extension simple au projet. Ici, nous ajoutons un objet d'extension de message d'accueil au projet, qui vous permet de configurer le message d'accueil. Utilisez ce code dansbuild.gradle fichier.

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

Utilisez le code suivant pour exécuter le script ci-dessus.

C:\> gradle -q hello

Production:

Hi from Gradle

Dans cet exemple, GreetingPlugin est un ancien objet Groovy avec un champ appelé message. L'objet d'extension est ajouté à la liste des plugins avec le nom de salutation. Cet objet devient alors disponible en tant que propriété de projet avec le même nom que l'objet d'extension.

Gradle ajoute une fermeture de configuration pour chaque objet d'extension, afin que vous puissiez regrouper les paramètres ensemble. Jetez un œil au code suivant. Utilisez ce code dansbuild.gradle fichier.

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
}

Utilisez le code suivant pour exécuter le script ci-dessus.

C:\> gradle -q hello

Production:

Hello from Gradle

Plugins Gradle standard

Il existe différents plugins inclus dans la distribution Gradle.

Plugins de langue

Ces plugins ajoutent la prise en charge de divers langages qui peuvent être compilés et exécutés dans la JVM.

Identifiant du plug-in S'applique automatiquement La description
Java java-base Ajoute des fonctionnalités de compilation, de test et de regroupement Java à un projet. Il sert de base à de nombreux autres plugins Gradle.
sensationnel java, groovy-base Ajoute la prise en charge de la création de projets Groovy.
scala java, scala-base Ajoute la prise en charge de la création de projets Scala.
antlr Java Ajoute la prise en charge de la génération d'analyseurs utilisant Antlr.

Plugins de langue d'incubation

Ces plugins ajoutent la prise en charge de différentes langues.

Identifiant du plug-in S'applique automatiquement La description
assembleur - Ajoute des fonctionnalités de langage d'assemblage natif à un projet.
c - Ajoute des capacités de compilation source C à un projet.
cpp - Ajoute des capacités de compilation de sources C ++ à un projet.
objectif c - Ajoute des capacités de compilation de source Objective-C à un projet.
objectif-cpp - Ajoute des capacités de compilation de source Objective-C ++ à un projet.
windows-ressources - Ajoute la prise en charge de l'inclusion des ressources Windows dans les binaires natifs.