Projekt wielomodułowy składa się z jednego modułu głównego i wielu modułów podrzędnych. Ma następujący układ:
(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/
podfoldery mogą być również zlokalizowane głębiej w podfolderach, ale bez modyfikowania kodu w settings.gradle, ich nazwa będzie zawierała nazwę takich folderów.
settings.gradle
Główną rolą settings.gradle jest zdefiniowanie wszystkich zawartych modułów podrzędnych i zaznaczenie katalogu głównego drzewa modułów, dzięki czemu można mieć tylko jeden settings.gradle
plik w projekcie wielomodułowym.
rootProject.name = 'project-x'
include 'sub-a', 'sub-b'
Plik ustawień jest również napisany w formie groovy, a wyszukiwanie podmodułów można dostosować.
build.gradle
Na moduł przypada jeden taki plik, który zawiera logikę kompilacji dla tego modułu.
W build.gradle
pliku modułu głównego możesz użyć allprojects {}
lub subprojects {}
zdefiniować ustawienia dla wszystkich innych modułów.
W build.gradle
pliku podmodułów można użyć, compile project(':sub-a')
aby uzależnić jeden podmoduł od drugiego.
gradle.properties
Jest to opcjonalne, jego głównym celem jest zapewnienie opcji startowych, które można wykorzystać do uruchomienia samego gradle, np
org.gradle.jvmargs=-Xmx=... -Dfile.encoding=UTF-8 ...
org.gradle.configureondemand=true
Te wartości mogą być przesłonięte przez plik USER_HOME/.gradle/gradle.properties
i zastąpione przez argumenty wiersza poleceń gradle. Możliwe jest również ustawienie zmiennych środowiskowych dla kompilacji w tym pliku, używając systemProp.
jako przedrostka.
Każda właściwość w tym pliku może być użyta w dowolnym pliku build.gradle, więc niektóre projekty również umieszczają wersję zależności lub informacje o wydaniu gradle.properties
, ale jest to prawdopodobnie nadużycie tego pliku.
my-gradle-stuff / utils.gradle
(Możliwa jest dowolna nazwa folderu lub pliku). Możesz zdefiniować dodatkowe niestandardowe pliki gradle w celu ponownego użycia definicji i dołączyć je do innych plików gradle za pośrednictwem
apply from: "$rootDir/gradle/utils.gradle"
inne miejsca, w których można to umieścić, mogą być src/gradle
lubsrc/build/gradle
buildSrc / ...
Ten folder jest wyjątkowy, sam w sobie jest jak osobny projekt gradle. Jest budowany przed zrobieniem czegokolwiek innego i może dostarczyć funkcji do użycia w każdym innym pliku gradle. Z przyczyn technicznych obsługa IDE dla odwołań do tego folderu działa znacznie lepiej niż jakikolwiek inny sposób wyodrębniania wspólnego kodu z wielu build.gradle
plików do oddzielnej lokalizacji.
Możesz zdefiniować złożoną, niestandardową logikę kompilacji w Javie, Groovy lub Kotlin, zamiast pisać i wdrażać wtyczkę. Jest to również przydatne do testowania jednostkowego niestandardowego kodu kompilacji, ponieważ możesz mieć testy jednostkowe. Strukturę folderów źródłowych w programie buildSrc
można dostosować tak, jak w każdym projekcie java / groovy / kotlin.