मल्टी-मॉड्यूल प्रोजेक्ट में एक मुख्य मॉड्यूल और कई सबमॉड्यूल होते हैं। इसका यह लेआउट है:
(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/
सबमोड्यूल्स सबफ़ोल्डर्स में भी गहराई से स्थित हो सकते हैं, लेकिन सेटिंग्स में कोड को संशोधित किए बिना। उनके नाम में ऐसे फ़ोल्डर का नाम शामिल होगा।
settings.gradle
Settings.gradle की मुख्य भूमिका सभी सम्मिलित सबमॉडल्स को परिभाषित करना और मॉड्यूल के एक पेड़ की निर्देशिका जड़ को चिह्नित करना है, इसलिए आपके पास settings.gradle
एक मल्टी-मॉड्यूल प्रोजेक्ट में केवल एक फ़ाइल हो सकती है ।
rootProject.name = 'project-x'
include 'sub-a', 'sub-b'
सेटिंग्स फ़ाइल को ग्रूवी में भी लिखा गया है, और सबमॉड्यूल लुकअप को अनुकूलित किया जा सकता है।
build.gradle
प्रति मॉड्यूल एक ऐसी फाइल है, इसमें इस मॉड्यूल के लिए बिल्ड लॉजिक है।
मुख्य मॉड्यूल की build.gradle
फ़ाइल में , आप अन्य सभी मॉड्यूल के लिए सेटिंग्स का उपयोग या परिभाषित कर सकते हैं ।allprojects {}
subprojects {}
build.gradle
सबमॉड्यूल्स की फ़ाइल में, आप compile project(':sub-a')
एक सबमॉड्यूल बनाने के लिए दूसरे पर निर्भर होने का उपयोग कर सकते हैं ।
gradle.properties
यह वैकल्पिक है, इसका मुख्य उद्देश्य स्टार्टअप को रनिंग ग्रेडेल के लिए उपयोग करने के लिए विकल्प प्रदान करना है, जैसे
org.gradle.jvmargs=-Xmx=... -Dfile.encoding=UTF-8 ...
org.gradle.configureondemand=true
इन मानों को एक फ़ाइल द्वारा ओवरराइड किया जा सकता है USER_HOME/.gradle/gradle.properties
, और ग्रेडल कमांड लाइन तर्कों द्वारा ओवरराइड किया जा सकता है । इसके अलावा systemProp.
उपसर्ग के रूप में इस फ़ाइल में निर्माण के लिए पर्यावरण चर सेट करना संभव है ।
इस फ़ाइल की किसी भी संपत्ति का उपयोग किसी भी बिल्ड.ग्रेडल में किया जा सकता है, इसलिए कुछ परियोजनाएं निर्भरता संस्करण भी डालती हैं या जानकारी जारी करती हैं gradle.properties
, लेकिन यह इस फ़ाइल का दुरुपयोग है।
मेरी-Gradle-सामान / utils.gradle
(फ़ोल्डर या फ़ाइल का कोई भी नाम संभव है।) आप परिभाषाओं का पुन: उपयोग करने के लिए अतिरिक्त कस्टम ग्रेडल फ़ाइलों को परिभाषित कर सकते हैं, और उन्हें अन्य ग्रेडल फ़ाइलों में शामिल कर सकते हैं
apply from: "$rootDir/gradle/utils.gradle"
इसे लगाने के लिए अन्य स्थान src/gradle
या हो सकते हैंsrc/build/gradle
buildSrc / ...
यह फ़ोल्डर विशेष है, यह अपने आप में एक अलग ग्रेडल प्रोजेक्ट की तरह है। यह कुछ और करने से पहले बनाया गया है, और किसी भी अन्य ग्रेडल फ़ाइल में उपयोग करने के लिए फ़ंक्शन प्रदान कर सकता है। तकनीकी कारणों के कारण, इस फ़ोल्डर के संदर्भों के लिए आईडीई समर्थन, किसी भी अन्य तरीके से कई build.gradle
कोडों से एक अलग स्थान पर आम कोड निकालने की तुलना में बेहतर काम करता है ।
आप java, groovy या kotlin में जटिल कस्टम बिल्ड लॉजिक को परिभाषित कर सकते हैं, बजाय एक लिखने और एक प्लगइन को तैनात करने के। यह आपके कस्टम बिल्ड कोड के यूनिट-परीक्षण के लिए भी उपयोगी है, क्योंकि आपके पास यूनिट परीक्षण हो सकते हैं। स्रोत फ़ोल्डर संरचना को buildSrc
किसी भी जावा / ग्रूवी / कोटलिन परियोजना के लिए अनुकूलित किया जा सकता है।