मैं आपको स्पष्ट अवधारणा देना चाहता हूं। इस कारण से, मैं बेहतर समझने के लिए 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
मैं दोनों मेरे buildscript और अपने प्रोजेक्ट के लिए Maven केंद्रीय की जरूरत है, मैं इसे दो बार की घोषणा करने की जरूरत है? –
हां, आपको वास्तव में इसे दो बार निर्दिष्ट करना होगा। –
इसका एक उदाहरण के रूप में, सामान्य "संकलन" और "testCompile" कीवर्ड के अतिरिक्त निर्भरता के लिए "प्रदत्त" और "वैकल्पिक" कीवर्ड सक्षम करने के लिए स्प्रिंग प्रोपडेप्स प्लगइन को बिस्क्रिप्ट में जोड़ा जा सकता है। नोट: युद्ध प्लगइन पहले से ही "प्रदत्त" कीवर्ड प्रदान करता है, आपको जार परियोजनाओं के लिए केवल प्रस्तावों की आवश्यकता है जो युद्ध के भीतर तैनात किए जाएंगे। – Powerlord