305 votes

Objectif du bloc buildscript dans Gradle

Je suis nouveau à Gradle et je lis la documentation mais je ne comprends pas certaines parties. L'une de ces parties est liée à buildscript bloc. Quelle est sa fonction ?

Si votre script doit utiliser des bibliothèques externes, vous pouvez les ajouter au chemin de classe du script dans le script lui-même. Pour ce faire, vous utilisez la méthode buildscript(), en passant une closure qui déclare le classpath de build script.

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath group: 'commons-codec', name: 'commons-codec', version: '1.2'
  }
}

Ok mais quelle est la différence avec :

repositories {
  mavenCentral()
}
dependencies {
  compile group: 'commons-codec', name: 'commons-codec', version: '1.2'
}

Par exemple, pourquoi est-il nécessaire d'utiliser buildscript ?

222voto

Peter Niederwieser Points 36369

Les buildScript détermine quels plugins, classes de tâches et autres classes sont disponibles pour être utilisés dans l'application le reste de la construction script . Sans un buildScript vous pouvez utiliser tout ce qui est fourni avec Gradle. Si vous souhaitez utiliser des plugins tiers, des classes de tâches ou d'autres classes (dans la construction script !), vous devez spécifier les dépendances correspondantes dans la section buildScript bloc.

191voto

Ashish Points 1921
  • Le niveau mondial dependencies y repositories listent les dépendances nécessaires à la construction et à l'exécution de votre source, etc.
  • Les buildscript est pour le build.gradle lui-même. Il contiendrait donc les dépendances nécessaires à la création de RPM, par exemple, Dockerfile et toutes les autres dépendances nécessaires à l'exécution des tâches dans tous les domaines dépendants. build.gradle

12voto

KunYu Tsai Points 402

Un peu plus d'explications en démontrant le fichier gradle de premier niveau d'Android.

buildscript {
    // this is where we are going to find the libraries defined in "dependencies block" at below
    repositories {
        google()
        jcenter()
        maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
    }

    // everything listed in the dependencies is actually a plugin, which we'll do "apply plugin" in our module level gradle file.
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.2' // this is android gradle plugin
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // kotlin gradle plugin
    }
}

fichier gradle au niveau du module

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

Qu'est-ce qu'un "plugin" ? Il s'agit simplement de classes Java qui implémentent l'interface Plugin. Sous l'interface, il y a une méthode "apply" pour ajouter plusieurs objets de tâches avec des noms différents. La tâche est une classe dans laquelle nous pouvons mettre en œuvre le flux de travail. Par exemple, la tâche de construction comprend le flux de construction de l'application.

Alors, que fait buildscript ? Il définit où trouver les plugins. Que fait le plugin ? Il englobe plusieurs tâches. Que fait la tâche ? Elle nous fournit la construction, l'installation, la vérification, etc.

Il se peut que ma compréhension soit erronée. N'hésitez pas à me corriger si vous estimez que quelque chose est trompeur.

9voto

Maulik Baraiya Points 153

La section de configuration "buildscript" est destinée à gradle lui-même (c'est à dire des changements sur la façon dont gradle est capable d'effectuer la construction). Cette section inclura donc généralement le plugin Android Gradle.

3voto

zgulser Points 925

C'est un peu haut de gamme, mais j'espère que cela vous aidera.

Pour moi, une distinction claire a commencé à se dessiner lorsque j'ai commencé à comprendre ce qui est un élément de construction La méthode de travail, la méthode et la tâche. Comment la syntaxe se présente, comment vous pouvez les configurer, etc. Je vous suggère donc de parcourir tout cela. Après cela, vous pourrez commencer à donner un sens à cette syntaxe.

Il est donc très important de savoir quel est le type de l'objet build.gradle (une instance de la classe Project) afin de savoir ce que l'on peut avoir à l'intérieur d'un fichier build.gradle. Cela permettrait de savoir d'où vient ce 'buildScript' et d'autres. Et pour étendre vos capacités/fonctionnalités (disons Android), voyez comment plugins peut aider.

Enfin, il existe une très bonne tutoriel ici qui parle des fermetures, des délégués qui sont les concepts essentiels pour comprendre le script.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X