Anda dapat mendeklarasikan dependensi umum dalam skrip induk:
ext.libraries = [ // Groovy map literal
spring_core: "org.springframework:spring-core:3.1",
junit: "junit:junit:4.10"
]
Dari skrip anak, Anda kemudian dapat menggunakan deklarasi dependensi seperti ini:
dependencies {
compile libraries.spring_core
testCompile libraries.junit
}
Untuk membagikan deklarasi dependensi dengan opsi konfigurasi lanjutan, Anda dapat menggunakan DependencyHandler.create
:
libraries = [
spring_core: dependencies.create("org.springframework:spring-core:3.1") {
exclude module: "commons-logging"
force = true
}
]
Beberapa dependensi dapat dibagikan dengan nama yang sama:
libraries = [
spring: [ // Groovy list literal
"org.springframework:spring-core:3.1",
"org.springframework:spring-jdbc:3.1"
]
]
dependencies { compile libraries.spring }
kemudian akan menambahkan kedua dependensi sekaligus.
Satu bagian informasi yang tidak dapat Anda bagikan dengan cara ini adalah konfigurasi apa ( cakupan dalam istilah Maven) yang harus ditetapkan untuk dependensi. Namun, dari pengalaman saya, lebih baik menjelaskan hal ini secara eksplisit.
Peter Niederwieser
sumber
dependencies.gradle
naskah mana saya mendefinisikan semua dependensi saya sebagai properti, misalnya:ext.GROOVY = 'org.codehaus.groovy:groovy-all:2.1.6'
. Dalam proyek rootbuild.gradle
, saya menyertakanallprojects { apply from: "$rootDir/dependencies.gradle" }
. Kemudian semua dependensi didefinisikan dalam satu file alih-alih menyebarkannya, dan lebih banyak konstanta yang "mudah dibaca" digunakan dalam konfigurasi dependensi.allprojects
karena properti tambahan tingkat proyek dapat dilihat oleh subproyek.Ini adalah balasan yang terlambat, namun Anda mungkin juga ingin melihat: http://plugins.gradle.org/plugin/io.spring.dependency-management Ini memberikan kemungkinan untuk mengimpor 'bom' pakar, dan menggunakan kembali definisi didefinisikan dalam 'bom'. Ini tentunya sangat membantu ketika secara bertahap bermigrasi dari maven ke gradle! Menikmatinya sekarang.
sumber
Mulai Gradle 4.6, batasan dependensi disarankan dalam dokumentasi sebagai cara untuk mencapainya. Dari https://docs.gradle.org/current/userguide/declaring_dependencies.html#declaring_a_dependency_without_version :
Di
build.gradle
file induk Anda :Membungkus blok dependensi dengan pemeriksaan plugin Java (...
whenPluginAdded {
) tidak sepenuhnya diperlukan, tetapi kemudian akan menangani penambahan proyek non-Java ke build yang sama.Kemudian dalam proyek gradle anak Anda cukup menghilangkan verison:
Build anak masih dapat memilih untuk menentukan versi yang lebih tinggi. Jika versi yang lebih rendah ditentukan, itu secara otomatis ditingkatkan ke versi dalam batasan.
sumber
allprojects
juga baik-baik saja.io.spring.gradle:dependency-management-plugin
plugin memiliki masalah dengan seri Gradle 3.x baru tetapi stabil untuk seri 2.x. Untuk referensi, lihat laporan bug Dukungan Drop untuk Gradle 3 # 115Dalam kasus Spring ( promotor utama penggunaan BOM ), Anda dapat mengakhiri dengan:
Perhatikan bahwa
io.spring.platform:platform-bom
milikiorg.springframework.boot:spring-boot-starter-parent
sebagai orang tua sehingga cocok dengan Spring BootAnda dapat memverifikasi resolusi ketergantungan aktual melalui:
atau dengan tugas:
Baca entri blog resmi Soring Manajemen ketergantungan yang lebih baik untuk Gradle untuk memahami alasan pengenalan
io.spring.gradle:dependency-management-plugin
.sumber
Anda dapat memusatkan ketergantungan menggunakan kode di bawah ini:
Di
gradle.properties
Di setiap modul tambahkan ke
build.gradle
:sumber
Entri blog ini menyarankan pengelolaan dependensi dan grup sebagai konfigurasi: https://www.javacodegeeks.com/2016/05/manage-dependencies-gradle-multi-project-build.html
Saya belum mencobanya sendiri, tapi kelihatannya menarik.
Proyek root build.gradle
Subproyek build.gradle
sumber
Untuk menjaga agar file gradle Anda tetap bersih, kita bisa mengelompokkan ketergantungan dalam sebuah array dan mengimplementasikannya nanti.
Jadi kode terakhirnya akan terlihat seperti ini:
sumber