Proyek multi-modul memiliki satu modul utama dan banyak submodul. Ini memiliki tata letak ini:
(root)
+- settings.gradle
+- build.gradle # optional (commonly present)
+- gradle.properties # optional
+-- buildSrc/ # optional
| +- build.gradle
| +-- src/...
+-- my-gradle-stuff/ # optional
| +- utils.gradle # optional
+-- sub-a/
| +- build.gradle
| +- src/
+-- sub-b/
+- build.gradle
+- src/
submodul juga dapat ditempatkan lebih dalam di subfolder, tetapi tanpa mengubah kode di settings.gradle, namanya akan menyertakan nama folder tersebut.
settings.gradle
Peran utama settings.gradle adalah untuk menentukan semua submodul yang disertakan dan untuk menandai akar direktori dari pohon modul, sehingga Anda hanya dapat memiliki satu settings.gradle
file dalam proyek multi-modul.
rootProject.name = 'project-x'
include 'sub-a', 'sub-b'
File pengaturan juga ditulis dengan groovy, dan pencarian submodule dapat disesuaikan.
build.gradle
Ada satu file seperti itu per modul, yang berisi logika build untuk modul ini.
Di build.gradle
file modul utama , Anda dapat menggunakan allprojects {}
atau subprojects {}
untuk menentukan pengaturan untuk semua modul lainnya.
Di build.gradle
file submodul, Anda dapat menggunakancompile project(':sub-a')
untuk membuat satu submodul bergantung satu sama lain.
gradle.properties
Ini opsional, tujuan utamanya adalah untuk menyediakan opsi startup yang akan digunakan untuk menjalankan gradle itu sendiri, mis
org.gradle.jvmargs=-Xmx=... -Dfile.encoding=UTF-8 ...
org.gradle.configureondemand=true
Nilai ini dapat diganti dengan file USER_HOME/.gradle/gradle.properties
, dan diganti dengan argumen baris perintah gradle. Juga dimungkinkan untuk menyetel variabel lingkungan untuk build dalam file ini menggunakan systemProp.
sebagai awalan.
Properti apa pun dalam file ini dapat digunakan dalam build.gradle apa pun, jadi beberapa project juga memasukkan versi dependensi atau informasi rilis gradle.properties
, tetapi kemungkinan itu adalah penyalahgunaan file ini.
my-gradle-stuff / utils.gradle
(Nama folder atau file apa pun dimungkinkan.) Anda dapat menentukan file gradle kustom tambahan untuk menggunakan kembali definisi, dan memasukkannya ke dalam file gradle lain melalui
apply from: "$rootDir/gradle/utils.gradle"
tempat lain untuk meletakkan ini mungkin src/gradle
atausrc/build/gradle
buildSrc / ...
Folder ini istimewa, seperti proyek gradle tersendiri. Itu dibuat sebelum melakukan hal lain, dan dapat menyediakan fungsi untuk digunakan dalam file gradle lainnya. Karena alasan teknis, dukungan IDE untuk referensi ke folder ini bekerja jauh lebih baik daripada cara lain untuk mengekstrak kode umum dari beberapa build.gradle
file ke lokasi terpisah.
Anda dapat menentukan logika build kustom yang kompleks di java, groovy, atau kotlin, daripada menulis dan menerapkan plugin. Ini juga berguna untuk pengujian unit kode build kustom Anda, karena Anda dapat melakukan pengujian unit. Struktur folder sumber di buildSrc
dapat diadaptasi seperti untuk proyek java / groovy / kotlin.