Je suis nouveau à Gradle et je lis la documentation mais je n'en comprends pas certaines parties. Une de ces pièces est reliée au buildscript
bloc. Quel est son objectif?
Si votre script de génération doit utiliser des bibliothèques externes, vous pouvez les ajouter au chemin de classe du script dans le script de génération lui-même. Pour ce faire, utilisez la méthode buildscript (), en passant une fermeture 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
?
Réponses:
Le
buildScript
bloc détermine quels plugins, classes de tâches et autres classes sont disponibles pour une utilisation dans le reste du script de génération . SansbuildScript
bloc, vous pouvez utiliser tout ce qui est livré avec Gradle prêt à l'emploi. Si vous souhaitez en outre utiliser des plugins tiers, des classes de tâches ou d'autres classes (dans le script de build!), Vous devez spécifier les dépendances correspondantes dans lebuildScript
bloc.la source
sample.infotask', name: 'infotask', version: '1.0'
Et utilisez la tâche _uploadArchives pour la télécharger vers le dépôt local ../lib ' Dans un autre projet si j'utilise ma tâche, je dois écrire: `buildscript {repositories {maven {url' file: ../ lib '}} dépendances {groupe classpath:' sample.infotask ', nom:' infotask ', version:' 1.0 '}} Ai-je raison? Pourquoi nous devons utiliser le bloc buildScript ? Lorsque je télécharge un artefact local, j'ai le pot sur ma machine. Et il suffit de dire à Gradle d'où et quoi mettre dans mon chemin de classe rien d'autre, quelle est la particularité ici?buildScript
bloc car Gradle a besoin de ces informations pour comprendre le reste du script de construction . C'est pourquoi vous devez fournir ces informations dans un canal séparé (lebuildScript
bloc). Techniquement parlant, Gradle a besoin de ces informations pour compiler et évaluer le reste du script de construction. Ce qui se passe sous le capot, c'est que Gradle sépare le script de construction en deux scripts (lebuildScript
bloc et tout le reste) afin qu'il puisse les traiter séparément.dependencies
et lesrepositories
sections répertorient les dépendances requises pour créer votre source et exécuter votre source, etc.buildscript
est pour lebuild.gradle
fichier lui-même. Ainsi, cela contiendrait des dépendances pour, par exemple, la création de RPM,Dockerfile
et toute autre dépendance pour l'exécution des tâches dans toutes les dépendancesbuild.gradle
la source
buildscript
est simplement une dépendance pour votre script de constructionJ'apprécie la réponse de Peter ... mais il 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.
Habituellement, les fonctionnalités dépendantes doivent être utilisées dans le programme Java ou dans tout autre programme que vous pourriez écrire. Par exemple, apporter Spring ne doit pas être utilisé dans le script de construction, mais dans le programme Java. Le mettre dans la
buildscript
fermeture garantit que les dépendances sont disponibles pour une utilisation dans la construction Gradle elle-même. Pas le programme de sortie.la source
La section de configuration "buildscript" concerne le gradle lui-même (c'est-à-dire les modifications apportées à la façon dont gradle est capable d'exécuter le build). Cette section inclura donc généralement le plugin Android Gradle.
la source
C'est un peu haut niveau mais l'espoir aide.
Pour moi, une distinction claire a commencé à se former une fois que je commence à comprendre ce qu'est un bloc de construction , une méthode et une tâche. À quoi ressemble la syntaxe, comment les configurer, etc. Je vous suggère donc de parcourir tout cela. Après cela, vous pouvez commencer à donner un sens à cette syntaxe.
Ensuite, il est 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 vous pouvez avoir dans un fichier build.gradle. Cela répondrait à l'origine de ce «buildScript» et d'autres. Et pour étendre vos capacités / fonctionnalités (disons Android), voyez comment les plugins peuvent vous aider.
Enfin et surtout, il y a un très bon tutoriel ici qui parle de fermetures, les délégués qui sont les concepts essentiels pour comprendre le script.
la source
Un peu plus d'explications en faisant la démonstration du fichier Gradle de haut niveau Android.
fichier de niveau de module
Qu'est-ce que le "plugin"? Ce ne sont que des classes java, qui implémentent l'interface Plugin. Sous l'interface, il a une méthode «appliquer» pour ajouter plusieurs objets de tâche avec des noms différents. La tâche est une classe où nous pouvons implémenter le flux de travail. Par exemple, la tâche de génération se compose du flux de création 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? Il nous fournit la construction, l'installation, les peluches, etc.
Ma compréhension pourrait être fausse. N'hésitez pas à me corriger si vous trouvez que quelque chose est trompeur.
la source