2012-12-17 21 views
126

ग्रेड निर्माण के निर्माण या रूट स्तर के buildScript अनुभाग में रिपॉजिटरीज़ घोषित करने के बीच क्या अंतर है।ग्रैडल बिल्डस्क्रिप्ट निर्भरता

विकल्प 1:

build.gradle:

buildScript { 
    repositories { 
     mavenCentral(); 
    } 
} 

या

build.gradle:

repositories { 
    mavenCentral(); 
} 

उत्तर

115

buildScript बीएल में खजाने ओक का उपयोग आपकी बिल्डस्क्रिप्ट निर्भरताओं की निर्भरताओं को लाने के लिए किया जाता है। ये निर्भरताएं हैं जो आपके निर्माण के वर्गपथ पर रखी जाती हैं और आप अपनी बिल्ड फ़ाइल से संदर्भित कर सकते हैं। उदाहरण के लिए इंटरनेट पर मौजूद अतिरिक्त प्लगइन्स।

रूट स्तर पर रिपोजिटरी का उपयोग उन निर्भरताओं को प्राप्त करने के लिए किया जाता है जिन पर आपकी परियोजना निर्भर करती है। तो आपकी परियोजना को संकलित करने के लिए आपको आवश्यक सभी निर्भरताओं की आवश्यकता है।

+12

मैं दोनों मेरे buildscript और अपने प्रोजेक्ट के लिए Maven केंद्रीय की जरूरत है, मैं इसे दो बार की घोषणा करने की जरूरत है? –

+13

हां, आपको वास्तव में इसे दो बार निर्दिष्ट करना होगा। –

+0

इसका एक उदाहरण के रूप में, सामान्य "संकलन" और "testCompile" कीवर्ड के अतिरिक्त निर्भरता के लिए "प्रदत्त" और "वैकल्पिक" कीवर्ड सक्षम करने के लिए स्प्रिंग प्रोपडेप्स प्लगइन को बिस्क्रिप्ट में जोड़ा जा सकता है। नोट: युद्ध प्लगइन पहले से ही "प्रदत्त" कीवर्ड प्रदान करता है, आपको जार परियोजनाओं के लिए केवल प्रस्तावों की आवश्यकता है जो युद्ध के भीतर तैनात किए जाएंगे। – Powerlord

12

बिल्ड स्क्रिप्ट (यानी build.gradle) में बिल्ड स्क्रिप्ट के निष्पादन के लिए कुछ निर्भरता हो सकती है। आप बिल्डस्क्रिप्ट ब्लॉक के भीतर उन निर्भरताओं को संलग्न करेंगे। Chapter 4 of Gradle Beyond the Basics इसे विस्तार से बताता है।

+23

लिंक प्रमाणीकरण के बिना काम नहीं करता है। – RaGe

1

मैं आपको स्पष्ट अवधारणा देना चाहता हूं। इस कारण से, मैं बेहतर समझने के लिए build.grade स्नैपशॉट कोड संलग्न कर रहा हूं।

buildscript निर्भरता:

buildscript { 
    repositories { 
     maven { url("https://plugins.gradle.org/m2/") } 
    } 

    dependencies { 
     classpath 'net.saliman:gradle-cobertura-plugin:2.3.2' 
     classpath 'com.netflix.nebula:gradle-lint-plugin:latest.release' 
    } 
} 

रूट स्तर/कोर निर्भरता:

repositories{ 
    mavenLocal() 
    maven { url("https://plugins.gradle.org/m2/") } 
    maven { url "https://repo.spring.io/snapshot" } 
} 

dependencies { 
     //Groovy 
     compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.3.10' 

     //Spock Test 
     compile group: 'org.spockframework', name: 'spock-core', version: '1.0-groovy-2.3' 

     //Test 
     testCompile group: 'junit', name: 'junit', version: '4.10' 
     testCompile group: 'org.testng', name: 'testng', version: '6.8.5' 
} 

तो, सबसे पहले मैं एक शब्द में स्पष्ट करना चाहते हैं कि

i) बिल्डस्क्रिप्ट निर्भरता जार फ़ाइल होगी बिल्डस्क्रिप्ट रिपॉजिटरीज़ से डाउनलोड किया गया। [परियोजना बाहरी निर्भरता]

ii) रूट स्तर निर्भरता जार फ़ाइल रूट स्तर भंडार से डाउनलोड की जाएगी। [परियोजना निर्भरता के लिए]

यहाँ,

"buildscript" ब्लॉक केवल buildscript प्रक्रिया के लिए ही निर्भरता, आवेदन कोड के लिए नहीं नियंत्रित करता है। विभिन्न ग्रेडल प्लगइन जैसे gradle-cobertura-plugin, gradle-lint-plugin बिल्डस्क्रिप्ट रेपो से पाए जाते हैं। उन प्लगइन्स को एप्लिकेशन कोड के लिए निर्भरता के रूप में संदर्भित नहीं किया जाएगा।

लेकिन परियोजना संकलन और परीक्षण चलने वाली जार फ़ाइलों जैसे groovy all jar, junit and testng jar रूट स्तर भंडारों से मिलेगा।

और दूसरी बात, maven { url("https://plugins.gradle.org/m2/") } भाग दोनों ब्लॉक में उपयोग किया जा सकता है। क्योंकि वे विभिन्न निर्भरताओं के लिए उपयोग किया जाता है।

संसाधन लिंक:Difference between dependencies within buildscript closure and core