Je suis nouveau à Gradle et je lis la documentation, mais je ne comprends pas certaines parties. Une de ces parties est connectée au bloc buildscript
. Quel est son objectif?
Si votre script de construction doit utiliser des bibliothèques externes, vous pouvez les ajouter au chemin de classe du script dans le script de construction lui-même. Pour ce faire, vous utilisez la méthode buildscript () en transmettant une clôture qui déclare le chemin de classe du script de génération.
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
?
Le bloc buildScript
détermine quels plugins, classes de tâches et autres classes sont disponibles pour une utilisation dans reste du script de construction. Sans bloc buildScript
, vous pouvez utiliser tout ce qui est livré avec Gradle tout prêt à l'emploi. Si vous souhaitez également utiliser des plug-ins tiers, des classes de tâches ou d'autres classes (dans le script de construction!), Vous devez spécifier les dépendances correspondantes dans le bloc buildScript
.
dependencies
et repositories
de niveau global répertorient les dépendances nécessaires à la création de votre source et à son exécution, etc.buildscript
est pour le fichier build.gradle
lui-même. Donc, cela contiendrait des dépendances pour créer des RPM, Dockerfile
, et toute autre dépendance pour exécuter les tâches dans tous les build.gradle
dépendants.J'apprécie la réponse de Peter ... mais ce n'était pas immédiatement évident pour moi ce que le reste du script de construction signifiait, comme souligné dans la réponse et dans la documentation.
Généralement, les fonctionnalités dépendantes sont utilisées dans le programme Java ou tout autre programme en cours d’écriture. Bringing in Spring, par exemple, ne doit pas être utilisé dans le script de construction, mais dans le programme Java. Le placer dans la fermeture buildscript
garantit que les dépendances sont disponibles pour une utilisation dans la construction de gradles elle-même. Pas le programme de sortie.
La section de configuration "buildscript" est destinée à Gradle lui-même (c’est-à-dire aux changements apportés à la manière dont Gradle est capable d’effectuer la construction). Donc, cette section inclura généralement le plugin Android Gradle.
C'est un peu haut niveau mais l'espoir aide.
Pour moi, une distinction claire a commencé à se dessiner une fois que je commence à comprendre ce qu'est n bloc constitutif , une méthode et une tâche. À quoi ressemble la syntaxe, comment vous pouvez les configurer, etc. Je vous suggère donc de parcourir tout cela. Après cela, vous pouvez commencer à comprendre cette syntaxe.
Ensuite, il est très important de savoir quel est le type d'objet build.gradle (une instance de la classe Project) afin de savoir ce que vous pouvez avoir dans un fichier build.gradle. Cela répondrait à l'origine de ce 'buildScript' et des autres. Et pour étendre vos capacités/fonctionnalités (disons Android), voyez comment plugins peut vous aider.
Enfin et surtout, il existe un très bon tutoriel ici qui parle de fermetures, de délégués qui sont les concepts essentiels pour comprendre le script.
Un peu plus d'explications en montrant Android fichier de niveau supérieur.
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 de niveau de module
apply plugin: 'com.Android.application'
apply plugin: 'kotlin-Android'
apply plugin: 'kotlin-Android-extensions'
Qu'est-ce que "plugin"? Ce ne sont que des classes Java, qui implémentent l'interface de plug-in. Sous l'interface, il existe une méthode "apply" pour ajouter plusieurs objets de tâches avec des noms différents. Task est une classe dans laquelle nous pouvons implémenter le workflow. Par exemple, la tâche de création consiste en un processus de création de l'application.
Alors, que fait le script de construction? Il définit où trouver les plugins. Que fait le plugin? Il englobe plusieurs tâches. Que fait la tâche? Il nous fournit la construction, l'installation, la charpie, etc.
Ma compréhension peut être fausse. S'il vous plaît n'hésitez pas à me corriger si vous trouvez quelque chose est trompeur.