बिल्ड.ग्रेड में बिल्डस्क्रिप्ट और ऑलप्रोजेक्ट के बीच क्या अंतर है?


135

एक मल्टी-प्रोजेक्ट ग्रेडेल बिल्ड पर, क्या कोई मुझे बता सकता है कि वास्तव में "ऑलप्रोजेक्ट्स" सेक्शन और "बिल्डस्क्रिप्ट" के बीच अंतर क्या है? दोनों का कार्य repositoriesऔर dependenciesकार्य है। है allprojectsअपने प्रोजेक्ट के लिए? किस बारे में buildscript?

buildscript {  
     repositories {
         ...
     }
     dependencies {
         ...
     }
}

तथा

allprojects(subprojects) { 
     repositories {
         ...
     }
     dependencies {
         ...
     }
}

जवाबों:


137

" buildscript" कॉन्फिगरेशन सेक्शन अपने आप ही ग्रेडेल के लिए है (यानी कि कैसे बिल्ड बिल्ड करने में सक्षम है)। इसलिए इस खंड में आमतौर पर एंड्रॉइड ग्रैडल प्लगइन शामिल होगा।

" allprojects" अनुभाग ग्रैडल द्वारा बनाए जा रहे मॉड्यूल के लिए है।

अक्सर रिपॉजिटरी सेक्शन दोनों के लिए समान होता है, क्योंकि दोनों को आमतौर पर jcenter (या शायद मैवेन सेंट्रल) से उनकी निर्भरता मिलेगी। लेकिन "निर्भरता" खंड अलग होगा।

आमतौर पर "allprojects" के लिए "निर्भरता" खंड खाली है क्योंकि प्रत्येक मॉड्यूल के लिए निर्भरताएं अद्वितीय हैं और प्रत्येक मॉड्यूल के भीतर "build.gradle" फ़ाइल में होंगी। हालाँकि, यदि सभी मॉड्यूल समान निर्भरताएँ साझा करते हैं तो उन्हें यहाँ सूचीबद्ध किया जा सकता है।


क्या हमें वर्गीकृत संस्करण निर्दिष्ट करना है?
इगोरगानापल्स्की

उपयोगकर्ता: 6998684 ग्रेडेल का संस्करण पूरी परियोजना पर लागू होता है और यह एक ऐसी फ़ाइल में घोषित किया जाता है जो थोड़ी छिपी होती है। "./Gradle/wrapper/gradle-wrapper.properties" में देखो
AndroidGuy

22

टीएल; डीआर: buildscriptप्लगइन्स को खोजने में मदद करता है, allprojectsसभी परियोजनाओं पर लागू होता है


https://docs.gradle.org/current/userguide/userguide_single.html#applyPluginBuildscript कहती है

बाइनरी प्लगइन्स जो बाहरी जार फ़ाइलों के रूप में प्रकाशित किए गए हैं, उन्हें निर्माण स्क्रिप्ट क्लासपाथ में प्लगइन जोड़कर और फिर प्लगइन को लागू करके एक परियोजना में जोड़ा जा सकता है।

तो आपको buildscriptप्लगइन्स को खोजने के लिए ग्रेडेल की आवश्यकता है , जैसा कि

वास्तविक दुनिया स्वचालन के लिए जानबूझकर इसके मूल में ग्रेड बहुत कम प्रदान करता है। जावा कोड को संकलित करने की क्षमता जैसे सभी उपयोगी फीचर प्लगइन्स द्वारा जोड़े जाते हैं। प्लगइन्स नए कार्यों (जैसे JavaCompile), डोमेन ऑब्जेक्ट्स (जैसे SourceSet), कॉन्वेंटेशन (जैसे जावा स्रोत src / main / java पर स्थित है) के साथ-साथ अन्य प्लगइन्स से कोर ऑब्जेक्ट्स और ऑब्जेक्ट्स को एक्सटेंड करते हैं।

के बारे मेंallprojects :

प्रोजेक्ट एपीआई एक संपत्ति प्रदान करता है allprojectsजो वर्तमान परियोजना के साथ एक सूची देता है और इसके नीचे के सभी उपप्रोजेक्ट। यदि आप allprojectsएक बंद के साथ कॉल करते हैं, तो बंद होने के बयान संबंधित परियोजनाओं को सौंप दिए जाते हैं allprojects


मेरे लिए, एंड्रॉइड पारिस्थितिकी तंत्र में शुरुआत के रूप में, इसका मतलब कुछ भी नहीं है। हमें अपनी निर्भरता कहाँ रखने की आवश्यकता है? क्या हम उस "बिल्डस्क्रिप्ट" को हटा सकते हैं?
मार्टिन बर्जर

@MartinBerger: मॉड्यूल में अपनी निर्भरता डालें build.gradle, न build.gradleकि ऊपर की एक निर्देशिका, जो इस प्रश्न से संबंधित है
सर्व-इन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.