कब उपयोग करें gradle.properties बनाम settings.gradle?


90

एक ग्रेडेल बिल्ड में तीन फाइलें होती हैं

  • build.gradle जो बिल्ड कॉन्फ़िगरेशन स्क्रिप्ट को परिभाषित करता है
  • gradle.properties
  • settings.gradle

प्रशन

  • क्या अंतर हैं settings.gradleऔर gradle.properties?
  • settings.gradleबनाम में एक सेटिंग्स कब डालनी चाहिए gradle.properties?

जवाबों:


85

settings.gradle

settings.gradleफ़ाइल एक ग्रूवी स्क्रिप्ट, बस की तरह है build.gradleफ़ाइल। settings.gradleप्रत्येक बिल्ड में केवल एक स्क्रिप्ट निष्पादित की जाएगी ( build.gradleमल्टी-प्रोजेक्ट बिल्ड में कई स्क्रिप्ट की तुलना में)। settings.gradleस्क्रिप्ट किसी भी पहले निष्पादित किया जाएगा build.gradleस्क्रिप्ट और यहां तक कि इससे पहले कि Projectउदाहरणों बनाई गई हैं। इसलिए, इसका मूल्यांकन किसी Settingsवस्तु के खिलाफ किया जाता है। इस Settingsऑब्जेक्ट के साथ आप अपने बिल्ड में सबप्रोजेक्ट जोड़ सकते हैं, कमांड लाइन ( StartParameter) से मापदंडों को संशोधित कर सकते हैं , और Gradleजीवनचक्र संचालकों को पंजीकृत करने के लिए ऑब्जेक्ट को एक्सेस कर सकते हैं । परिणामस्वरूप, उपयोग करें settings.gradleकि क्या आपकी सेटिंग्स बिल्ड-संबंधित हैं और आवश्यक नहीं कि प्रोजेक्ट-संबंधित हो या संभावित सबप्रोजेक्ट शामिल होने से पहले तर्क की आवश्यकता हो।

gradle.properties

gradle.propertiesफ़ाइल एक साधारण जावा है Propertiesकेवल द्वारा स्वचालित रूप से के दायरे में शामिल किया जा रहा एक विशेष भूमिका लाभ है कि फाइल Project(के रूप में 'परियोजना गुण' तथाकथित) वस्तु। यह एक साधारण कुंजी-मूल्य स्टोर है जो केवल स्ट्रिंग मानों की अनुमति देता है (ताकि आपको सूची या सरणियों को अपने आप से विभाजित करने की आवश्यकता हो)। आप gradle.propertiesइन स्थानों पर फाइलें रख सकते हैं :

  • परियोजना निर्देशिका में सीधे (परियोजना से संबंधित मूल्यों के लिए)
  • उपयोगकर्ता होम .gradleनिर्देशिका में (उपयोगकर्ता या पर्यावरण से संबंधित मूल्यों के लिए)

62

मल्टी-मॉड्यूल प्रोजेक्ट में एक मुख्य मॉड्यूल और कई सबमॉड्यूल होते हैं। इसका यह लेआउट है:

(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किसी भी जावा / ग्रूवी / कोटलिन परियोजना के लिए अनुकूलित किया जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.