Grado dipendenze buildscript


176

Qual è la differenza tra dichiarare i repository nella buildScriptsezione della build gradle o nel livello radice della build.

Opzione 1:

build.gradle :

buildScript {
    repositories {
        mavenCentral();
    }
}

o

build.gradle :

repositories {
    mavenCentral();
}

Risposte:


165

I repository nel blocco buildScript vengono utilizzati per recuperare le dipendenze delle dipendenze buildScript. Queste sono le dipendenze che vengono inserite nel percorso di classe della build e alle quali è possibile fare riferimento dal file di build. Ad esempio plugin extra che esistono su Internet.

I repository a livello di radice vengono utilizzati per recuperare le dipendenze da cui dipende il progetto. Quindi tutte le dipendenze di cui hai bisogno per compilare il tuo progetto.


19
Se ho bisogno di Maven Central sia per il mio buildscript che per il mio progetto, devo dichiararlo due volte?
Marcin Koziński

18
Sì, è necessario specificarlo due volte, quindi effettivamente.
Hiery Nomus

A titolo di esempio, il plug-in Spring Propdeps può essere aggiunto al buildscript per abilitare le parole chiave "fornite" e "opzionali" per le dipendenze oltre alle solite parole chiave "compila" e "testCompile". Nota: il plugin di guerra offre già la parola chiave "fornita", hai solo bisogno di propdeps per i progetti jar che verranno distribuiti all'interno di una guerra.
Powerlord,

14

Voglio darti un'idea chiara. Per questo motivo, allego build.grade codice di istantanea per una migliore comprensione.

dipendenze 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'
    }
}

livello radice / dipendenze core:

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'
}

Quindi, per prima cosa voglio chiarire in una sola parola

i) il file jar delle dipendenze buildscript verrà scaricato dai repository buildscript. [Dipendenza esterna del progetto]

ii) il file jar delle dipendenze a livello root verrà scaricato dai repository a livello root. [Per dipendenza dal progetto]

Qui,

Il blocco "buildscript" controlla solo le dipendenze per il processo buildscript stesso, non per il codice dell'applicazione. Come vari plugin gradle come gradle-cobertura-plugin,gradle-lint-plugin si trovano dai repository buildscript. Quei plugin non verrebbero indicati come dipendenze per il codice dell'applicazione.

Ma per la compilazione di progetti e testare file jar in esecuzione come groovy all jar, junit and testng jar troveranno dai repository di livello principale.

E un'altra cosa ,maven { url("https://plugins.gradle.org/m2/") } porzione può essere utilizzata in entrambi i blocchi. Perché sono usati per dipendenze diverse.

Collegamento alle risorse: differenza tra dipendenze all'interno della chiusura buildscript e core


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.