Możesz zadeklarować typowe zależności w skrypcie nadrzędnym:
ext.libraries = [ // Groovy map literal
spring_core: "org.springframework:spring-core:3.1",
junit: "junit:junit:4.10"
]
Ze skryptu podrzędnego możesz następnie użyć deklaracji zależności w następujący sposób:
dependencies {
compile libraries.spring_core
testCompile libraries.junit
}
Aby udostępnić deklaracje zależności z zaawansowanymi opcjami konfiguracji, możesz użyć DependencyHandler.create
:
libraries = [
spring_core: dependencies.create("org.springframework:spring-core:3.1") {
exclude module: "commons-logging"
force = true
}
]
Wiele zależności można udostępniać pod tą samą nazwą:
libraries = [
spring: [ // Groovy list literal
"org.springframework:spring-core:3.1",
"org.springframework:spring-jdbc:3.1"
]
]
dependencies { compile libraries.spring }
doda wtedy obie zależności jednocześnie.
Jedyną informacją, której nie możesz udostępniać w ten sposób, jest to, do jakiej konfiguracji ( zakresu w terminologii Maven) należy przypisać zależność. Jednak z mojego doświadczenia wynika, że i tak lepiej jest o tym powiedzieć.
Peter Niederwieser
źródło
dependencies.gradle
skrypt, w którym wszystkie moje zależności definiuję jako właściwości, npext.GROOVY = 'org.codehaus.groovy:groovy-all:2.1.6'
. : . W ramach projektu głównegobuild.gradle
, to jaallprojects { apply from: "$rootDir/dependencies.gradle" }
. Wtedy wszystkie zależności są definiowane w jednym pliku, zamiast je rozpraszać, a więcej „łatwych do odczytania” stałych jest używanych w konfiguracjach zależności.allprojects
ponieważ dodatkowe właściwości na poziomie projektu są widoczne dla podprojektów.To późna odpowiedź, ale możesz również zajrzeć na: http://plugins.gradle.org/plugin/io.spring.dependency-management Zapewnia możliwość zaimportowania „bom” producenta i ponownego wykorzystania definicji zdefiniowane w „bom”. Z pewnością jest to dobra pomoc przy stopniowej migracji z maven do gradle! Cieszę się tym teraz.
źródło
Począwszy od Gradle 4.6, ograniczenia zależności są sugerowane w dokumentacji jako sposób osiągnięcia tego. Z https://docs.gradle.org/current/userguide/declaring_dependencies.html#declaring_a_dependency_without_version :
W
build.gradle
pliku nadrzędnym :Opakowywanie bloku zależności za pomocą sprawdzenia wtyczki Java (...
whenPluginAdded {
) nie jest bezwzględnie konieczne, ale będzie wtedy obsługiwać dodawanie projektu innego niż Java do tej samej kompilacji.Następnie w projekcie oceny podrzędnej możesz po prostu pominąć wersję:
Kompilacje podrzędne nadal mogą określać wyższą wersję. Jeśli określono niższą wersję, jest ona automatycznie uaktualniana do wersji w ograniczeniu.
źródło
allprojects
jest również w porządku.io.spring.gradle:dependency-management-plugin
wtyczka ma problemy z nową serią Gradle 3.x, ale stabilna dla serii 2.x. W celach informacyjnych zajrzyj do raportu o błędzie Porzuć wsparcie dla Gradle 3 # 115W przypadku Spring ( główny promotor wykorzystania BOM ) możesz zakończyć:
Zauważ, że
io.spring.platform:platform-bom
maorg.springframework.boot:spring-boot-starter-parent
jako rodzica, więc jest kompatybilny z Spring BootRzeczywiste rozwiązanie zależności można zweryfikować poprzez:
lub z zadaniem:
Przeczytaj oficjalny wpis na blogu Soring Lepsze zarządzanie zależnościami dla Gradle, aby zrozumieć powód wprowadzenia
io.spring.gradle:dependency-management-plugin
.źródło
Możesz scentralizować zależność za pomocą poniższego kodu:
W
gradle.properties
W każdym module dodaj do
build.gradle
:źródło
Ten post na blogu sugeruje zarządzanie zależnościami i grupami jako konfiguracjami: https://www.javacodegeeks.com/2016/05/manage-dependencies-gradle-multi-project-build.html
Sam tego nie próbowałem, ale wygląda ciekawie.
Projekt główny build.gradle
Podprojekt build.gradle
źródło
Aby zachować porządek w pliku, możemy zgrupować zależności w tablicy i zaimplementować je później.
Więc ostateczny kod będzie wyglądał następująco:
źródło