अगर मैं सही तरीके से समझूं, तो आप Project.dependenciesस्क्रिप्ट ब्लॉक को स्क्रिप्ट ब्लॉक के साथ भ्रमित कर रहे हैं Project.buildscript.dependencies(ठीक उसी तरह जैसे मैंने इस प्रश्न पर पहुंचने पर किया था)
मैं इसका जवाब देने की कोशिश करूँगा कि मुझे क्या मिला।
मुझे लगता है कि आपको पहले से ही Project.dependenciesस्क्रिप्ट ब्लॉक से परिचित होना चाहिए । इस ब्लॉक में, हम निर्भरता की घोषणा करते हैं जो हमारे स्रोत कोड द्वारा आवश्यक हैं। निर्भरता घोषित करने के कई तरीके हैं जो हमें परियोजना के लिए चाहिए। ग्रैडल ट्यूटोरियल देखें : निर्भरता प्रकार । मैं केवल उस हिस्से का उल्लेख करूंगा जो इस समस्या के लिए सबसे अधिक प्रासंगिक है:
compile 'org.hibernate:hibernate-core:5.0.5.Final'एक मॉड्यूल निर्भरता घोषणा है। संकलित विन्यास (जिसे अब कार्यान्वयन कॉन्फ़िगरेशन द्वारा हटा दिया गया है।) केवल इसके लिए एक कीवर्ड है। Implementation only dependencies.यह एक कीवर्ड नहीं है जो यह वर्णन करता है कि यह किस प्रकार की निर्भरता है (यहाँ पर मैं ट्यूटोरियल में परिभाषित तीन प्रकारों का अनुसरण कर रहा हूँ, अर्थात मॉड्यूल, फ़ाइल, और परियोजना।)
में Gradle ट्यूटोरियल: तर्क बिल्ड आयोजन यह कहते हैं:
यदि आपकी बिल्ड स्क्रिप्ट को बाहरी पुस्तकालयों का उपयोग करने की आवश्यकता है, तो आप उन्हें स्क्रिप्ट की क्लासपाथ पर ही स्क्रिप्ट में जोड़ सकते हैं। आप इसे बिल्डस्क्रिप्ट () विधि का उपयोग करके करते हैं, एक क्लोजर में गुजरता है जो बिल्ड स्क्रिप्ट क्लासपैथ घोषित करता है।
यह उसी तरह से है जिसे आप घोषित करते हैं, उदाहरण के लिए, जावा संकलन क्लासपैथ। आप परियोजना निर्भरता को छोड़कर निर्भरता प्रकारों में वर्णित किसी भी निर्भरता प्रकार का उपयोग कर सकते हैं।
बिल्ड स्क्रिप्ट को क्लाथपथ घोषित करने के बाद, आप अपनी बिल्ड स्क्रिप्ट में कक्षाओं का उपयोग कर सकते हैं क्योंकि आप क्लासपाथ पर किसी भी अन्य कक्षाओं में होंगे।
मुझे उम्मीद है कि चीजें अब आपको स्पष्ट हो रही हैं।
साथ classpath "com.android.tools.build:gradle:${Versions.android_gradle_plugin}"हम स्थापित कर रहे हैं classpathविधि के साथ com.android.tools.build:gradle:${Versions.android_gradle_plugin}जो एक मॉड्यूल निर्भरता कि निर्माण स्क्रिप्ट खुद के बजाय अपनी परियोजना में स्रोत के द्वारा किया जाता है।
दूसरी ओर, compile 'org.hibernate:hibernate-core:5.0.5.Final'हम संकलन विन्यास के साथ आपकी परियोजना के लिए आवश्यक मॉड्यूल निर्भरता की घोषणा कर रहे हैं ।
tl; dr: The classpath, compileऔर implementationये सभी कीवर्ड हैं जिनका उपयोग विभिन्न परिस्थितियों में निर्भरता के खिलाफ किया जा सकता है। पूर्व का उपयोग तब किया जाता है जब आप बिल्ड स्क्रिप्ट पर निर्भरता में पास होना चाहते हैं, और बाद वाला एक कॉन्फ़िगरेशन है जिसे आप घोषित करना चाहते हैं।
classpathएक वैध निर्भरता गुंजाइश नहीं है।