Zależności skryptu kompilacji Gradle


176

Jaka jest różnica między deklarowaniem repozytoriów w buildScriptsekcji kompilacji Gradle lub na poziomie głównym kompilacji.

Opcja 1:

build.gradle :

buildScript {
    repositories {
        mavenCentral();
    }
}

lub

build.gradle :

repositories {
    mavenCentral();
}

Odpowiedzi:


165

Repozytoria w bloku buildScript służą do pobierania zależności twoich zależności buildScript. Są to zależności, które są umieszczane w ścieżce klas twojej kompilacji i do których możesz się odwoływać z pliku kompilacji. Na przykład dodatkowe wtyczki, które istnieją w Internecie.

Repozytoria na poziomie głównym służą do pobierania zależności, od których zależy Twój projekt. Więc wszystkie zależności potrzebne do skompilowania projektu.


19
Jeśli potrzebuję programu Maven Central zarówno dla mojego skryptu kompilacji, jak i projektu, czy muszę deklarować go dwukrotnie?
Marcin Koziński

18
Tak, wtedy rzeczywiście musisz podać to dwukrotnie.
Hiery Nomus

Jako przykład można dodać wtyczkę Spring propdeps do skryptu buildscript, aby włączyć „dostarczone” i „opcjonalne” słowa kluczowe dla zależności, oprócz zwykłych słów kluczowych „kompilacja” i „testCompile”. Uwaga: Wtyczka war już oferuje słowo kluczowe „dostarczone”, potrzebujesz tylko propdeps dla projektów jar, które zostaną wdrożone w czasie wojny.
Powerlord

14

Chcę dać ci jasną koncepcję. Z tego powodu dołączam kod migawki build.grade dla lepszego zrozumienia.

zależności 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'
    }
}

poziom główny / podstawowe zależności:

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

Więc najpierw chcę to wyjaśnić jednym słowem

i) Plik jar zależności buildscript zostanie pobrany z repozytoriów buildscript. [Zależność zewnętrzna projektu]

ii) Plik jar zależności poziomu głównego zostanie pobrany z repozytoriów poziomu głównego. [Dla zależności projektu]

Tutaj,

Blok „buildscript” kontroluje tylko zależności dla samego procesu buildscript, a nie dla kodu aplikacji. Podobnie jak różne wtyczki gradle gradle-cobertura-plugin, gradle-lint-pluginmożna je znaleźć w repozytoriach buildscript. Te wtyczki nie byłyby przywoływane jako zależności dla kodu aplikacji.

Ale w przypadku kompilacji projektu i testowania plików jar, takie jak groovy all jar, junit and testng jar, można znaleźć w repozytoriach poziomu głównego.

I jeszcze jedno , maven { url("https://plugins.gradle.org/m2/") }porcję można wykorzystać w obu blokach. Ponieważ są używane dla różnych zależności.

Link do zasobu: różnica między zależnościami w zamknięciu buildscript i core


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.