web-dev-qa-db-fra.com

Dépendances Grads Buildscript

Quelle est la différence entre la déclaration de référentiels dans la section buildScript de la construction du dégradé ou au niveau racine de la construction.

Option 1:

build.gradle:

buildScript {
    repositories {
        mavenCentral();
    }
}

ou

build.gradle:

repositories {
    mavenCentral();
}
161
Jeff Storey

Les référentiels du bloc buildScript sont utilisés pour extraire les dépendances de vos dépendances buildScript. Ce sont les dépendances qui sont placées sur le chemin de classe de votre construction et auxquelles vous pouvez faire référence à partir de votre fichier de construction. Par exemple, des plugins supplémentaires existent sur Internet.

Les référentiels au niveau racine permettent d'extraire les dépendances dont dépend votre projet. Donc, toutes les dépendances dont vous avez besoin pour compiler votre projet.

152
Hiery Nomus

Le script de construction (c'est-à-dire build.gradle) peut avoir certaines dépendances pour l'exécution du script de construction lui-même. Vous devriez inclure ces dépendances dans le bloc buildScript. Le chapitre 4 de Gradle Beyond the Basics le décrit en détail.

13
user3240644

Je veux vous donner une conception claire. Pour cette raison, j'attache le code d'instantané build.grade pour une meilleure compréhension.

Dépendances du buildscript :

buildscript {
    repositories {
        maven { url("https://plugins.gradle.org/m2/") }
    }

    dependencies {
        classpath 'net.saliman:gradle-cobertura-plugin:2.3.2'
        classpath 'com.netflix.nebula:gradle-lint-plugin:latest.release'
    }
}

dépendances niveau racine/noyau:

repositories{
    mavenLocal()
    maven { url("https://plugins.gradle.org/m2/") }
    maven { url "https://repo.spring.io/snapshot" }
}

dependencies {
        //Groovy
        compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.3.10'

        //Spock Test
        compile group: 'org.spockframework', name: 'spock-core', version: '1.0-groovy-2.3'

        //Test
        testCompile group: 'junit', name: 'junit', version: '4.10'
        testCompile group: 'org.testng', name: 'testng', version: '6.8.5'
}

Donc, je veux d’abord préciser en un seul mot que

i) Le fichier jar des dépendances de buildscript sera téléchargé à partir des référentiels de buildscript. [Dépendance externe du projet]

ii) Les fichiers jar des dépendances de niveau racine seront téléchargés à partir de référentiels de niveau racine. [Pour la dépendance du projet]

Ici,

Le bloc "buildscript" contrôle uniquement les dépendances pour le processus buildscript lui-même, pas pour le code de l'application. Différents plugins de type dégradés tels que gradle-cobertura-plugin, gradle-lint-plugin Sont disponibles dans les dépôts de buildscript. Ces plugins ne seraient pas référencés comme dépendances pour le code de l'application.

Mais pour la compilation de projets et les tests, les fichiers jar tels que groovy all jar, junit and testng jar Seront trouvés dans les référentiels de niveau racine.

Et une autre chose , la portion maven { url("https://plugins.gradle.org/m2/") } peut être utilisée dans les deux blocs. Parce qu'ils sont utilisés pour différentes dépendances.

Lien de ressource: Différence entre les dépendances au sein de la fermeture et du noyau de buildscript

6
SkyWalker