web-dev-qa-db-fra.com

Quelle est la différence dans l'application du plugin Gradle

Je ne comprends pas le bloc de plugins Gradle

apply plugin: 'someplugin1'
apply plugin: 'maven'

et un autre:

plugins {
   id 'org.hidetake.ssh' version '1.1.2'
}

Dans le premier bloc, nous avons un nom de plugin. dans un second package et version. Je ne comprends pas où je devrais utiliser le premier bloc et quand le second.

110
Yevgen Kulik

Le bloc plugins est la méthode la plus récente d’application de plugins. Ils doivent être disponibles dans le référentiel Gradle plugin . L'approche apply est la méthode la plus ancienne, mais plus flexible, permettant d'ajouter un plugin à votre construction.

La nouvelle méthode plugins ne fonctionne pas dans les configurations multi-projets (subprojects, allprojects), mais fonctionne sur la configuration de construction de chaque projet enfant.

Je pense que, à mesure que la fonctionnalité progresse, la méthode de configuration plugins prendra le pas sur l'ancienne approche, mais à ce stade, les deux peuvent être et sont utilisés simultanément.

121
cjstehno

Comme déjà mentionné par @cjstehno le apply plugin est une méthode héritée que vous devriez éviter.

Avec l'introduction des plugins DSL, les utilisateurs ne devraient avoir aucune raison d'utiliser la méthode traditionnelle d'application des plugins. Il est documenté ici au cas où un auteur de la construction ne pourrait pas utiliser le plug-in DSL en raison de restrictions dans son fonctionnement actuel.

Avec le nouveau plugins block méthode, vous pouvez ajouter un plugin et contrôler quand l'appliquer à l'aide d'un paramètre optionnel apply:

plugins {
    id «plugin id» version «plugin version» [apply «false»]
}

Vous utiliseriez toujours la méthode héritée dans les situations où vous souhaitez appliquer un plugin déjà ajouté mais pas appliqué dans votre bloc plugins. Par exemple, dans le projet principal, un plugin xyz est ajouté mais n'est pas appliqué et il ne devrait l'être que dans un sous-projet subPro:

plugins {
  id "xyz" version "1.0.0" apply false
}

subprojects { subproject ->
    if (subproject.name == "subPro") {
        apply plugin: 'xyz'
    }
}

Notez que vous n'avez plus besoin de la version. La version est requise dans le bloc plugins à moins que vous n'utilisiez l'un des plug-ins Core Gradle, tels que Java, scala, ...

J'ai passé du temps à comprendre la différence en essayant de créer un Spring Boot _ application, et c’est pourquoi je réponds à cela après un certain temps. L'exemple suivant d'utilisation de Spring Boot _ plugin m'a beaucoup aidé:

Ce qui devrait être utilisé actuellement:

plugins {
  id "org.springframework.boot" version "2.0.1.RELEASE"
}

Ce qui avait été utilisé avant Gradle 2.1:

buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "org.springframework.boot:spring-boot-gradle-plugin:2.0.1.RELEASE"
  }
}

apply plugin: "org.springframework.boot"
29
Mousa