Chcę dać ci jasną koncepcję. Z tego powodu dołączam kod migawki build.grade dla lepszego zrozumienia.
buildscript zależności:
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'
}
}
korzeniowe poziom/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 pierwsze chcę wyjaśnić w jednym słowie, które
i) będzie plik jar zależności buildscript pobrane z repozytoriów buildscript z . [Zależność zewnętrzna projektu]
ii) plik jar zależności poziomu korzenia zostanie pobrany z katalogu głównego repozytoriów poziomów. [Na zależność projekt]
Tutaj
przycisków „buildscript” blok sterowania tylko zależności dla samego procesu buildscript nie dla kodu aplikacji. Ponieważ różne wtyczki gradle takie jak gradle-cobertura-plugin
, gradle-lint-plugin
są znalezione z repozytoriów buildscript. Te wtyczki nie będą odwoływać się jako zależności dla kodu aplikacji.
Ale dla kompilacji projektu i testowania uruchomione pliki jar, takie jak groovy all jar, junit and testng jar
, zostaną znalezione z repozytoriów poziomu głównego.
I jeszcze jedna rzecz może być użyta w obu blokach w części:, maven { url("https://plugins.gradle.org/m2/") }
. Ponieważ są one używane dla różnych zależności.
zasobów Link:Difference between dependencies within buildscript closure and core
Jeśli muszę Maven centralny zarówno dla mojego buildscript i mój projekt, muszę zadeklarować go dwa razy? –
Tak, trzeba to podać dwukrotnie. –
Jako przykład tego, wtyczka propdeps Spring może zostać dodana do buildscript, aby włączyć słowa kluczowe "provided" i "optional" dla zależności oprócz zwykłych słów kluczowych "compile" i "testCompile". Uwaga: wtyczka wojny oferuje już słowo kluczowe "provided", potrzebujesz tylko propdeps dla projektów słoików, które zostaną rozmieszczone podczas wojny. – Powerlord