Groovy और Gradle: JVM स्वचालन और बिल्ड इंजीनियरिंग · पाठ

संस्करण टकराव और निर्भरता बाधाएँ सुलझाना

निर्भरता रिपोर्ट, समाधान रणनीतियों, बाधाओं और बाध्य संस्करणों का उपयोग करके निर्भरता संस्करणों के टकराव का निदान और समाधान करें।

पाठ 4, कुल 4 में से13 चरण

संस्करण टकराव और निर्भरता बाधाएँ सुलझाना, CoddyKit पर Groovy और Gradle: JVM स्वचालन और बिल्ड इंजीनियरिंग का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Groovy और Gradle: JVM स्वचालन और बिल्ड इंजीनियरिंग सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Groovy और Gradle: JVM स्वचालन और बिल्ड इंजीनियरिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

टकराव की समस्या

आप जिन दो लाइब्रेरी पर निर्भर हैं, वे एक ही संक्रमणीय निर्भरता के अलग-अलग संस्करण ला सकती हैं। Gradle को उनमें से एक चुनना पड़ता है — और गलत चुनाव रनटाइम त्रुटियाँ पैदा कर सकता है। इसे प्रबंधित करना एक मूलभूत कौशल है।

डिफ़ॉल्ट: नया संस्करण जीतता है

डिफ़ॉल्ट रूप से Gradle ग्राफ़ में किसी निर्भरता के लिए अनुरोधित सबसे उच्च संस्करण चुनकर टकराव का समाधान करता है। यह आम तौर पर सुरक्षित होता है, लेकिन हमेशा नहीं।

निर्भरता ट्री देखना

dependencies कार्य पूरा समाधान किया गया ग्राफ़ प्रिंट करता है और दिखाता है कि कौन-सा संस्करण जीता तथा क्यों।

gradle dependencies --configuration runtimeClasspath

एकल निर्भरता की व्याख्या

dependencyInsight कार्य ठीक-ठीक बताता है कि एक निर्भरता का समाधान कैसे हुआ और प्रत्येक संस्करण का अनुरोध किसने किया।

gradle dependencyInsight --dependency guava

संस्करण को बाध्य करना

आप समाधान रणनीति का उपयोग करके टकराव समाधान को ओवरराइड करते हुए कोई विशिष्ट संस्करण बाध्य कर सकते हैं।

configurations.all {
    resolutionStrategy {
        force 'com.google.guava:guava:32.1.3-jre'
    }
}

निर्भरता प्रतिबंध

आधुनिक तरीका constraints का उपयोग करके किसी निर्भरता को सीधे जोड़े बिना अनुमत संस्करण घोषित करता है — यह force से अधिक साफ़ तरीका है।

dependencies {
    constraints {
        implementation 'com.google.guava:guava:32.1.3-jre'
    }
}

संक्रमणीय निर्भरताएँ बाहर करना

कभी-कभी कोई संक्रमणीय निर्भरता पूरी तरह अवांछित होती है। उसे लाने वाली निर्भरता से उसे बाहर कर दें।

implementation('org.example:lib:1.0') {
    exclude group: 'commons-logging'
}

खराब संस्करण अस्वीकार करना

समाधान रणनीति ज्ञात रूप से खराब संस्करणों को अस्वीकार कर सकती है, ताकि Gradle उन्हें कभी न चुने।

resolutionStrategy {
    componentSelection {
        all { if (candidate.version == '1.2.0') reject('known bug') }
    }
}

टकराव पर विफल होना

कड़े पुनरुत्पादकता नियमों के लिए Gradle को निर्देश दें कि संस्करण टकराव होने पर बिल्ड विफल कर दे, ताकि आप उसका स्पष्ट रूप से समाधान करें।

resolutionStrategy { failOnVersionConflict() }

निर्भरताएँ लॉक करना

निर्भरता लॉकिंग समाधान किए गए संस्करणों को लॉकफ़ाइल में लिखती है, ताकि अलग-अलग मशीनों और समय पर बिल्ड पूरी तरह पुनरुत्पाद्य रहें।

gradle dependencies --write-locks

प्लैटफ़ॉर्म और BOM

platform नोटेशन से प्रकाशित BOM आयात करें, ताकि कई संबंधित निर्भरताएँ एक परीक्षण किए गए संस्करण-समूह के अनुरूप रहें और संस्करणों को हाथ से सँभालने से बचा जा सके।

dependencies {
    implementation platform('org.springframework.boot:spring-boot-dependencies:3.2.0')
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

त्वरित जाँच

टकराव समाधान के अपने ज्ञान की जाँच करें।

पुनरावलोकन

आपने संस्करण टकराव प्रबंधित करना सीखा:

  • डिफ़ॉल्ट समाधान सबसे उच्च संस्करण चुनता है
  • dependencies और dependencyInsight से निरीक्षण करें
  • force या, बेहतर रूप से, constraints से ओवरराइड करें
  • exclude अवांछित संक्रमणीय निर्भरताएँ हटाता है; reject खराब संस्करणों को रोकता है
  • निर्भरता लॉकिंग बिल्ड को पुनरुत्पाद्य बनाती है
शुरुआत निःशुल्क

एआई शिक्षक के साथ Groovy सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “संस्करण टकराव और निर्भरता बाधाएँ सुलझाना” पाठ निःशुल्क है?

हाँ—“संस्करण टकराव और निर्भरता बाधाएँ सुलझाना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Groovy और Gradle: JVM स्वचालन और बिल्ड इंजीनियरिंग पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Groovy और Gradle: JVM स्वचालन और बिल्ड इंजीनियरिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“संस्करण टकराव और निर्भरता बाधाएँ सुलझाना” में मैं क्या सीखूँगा?

निर्भरता रिपोर्ट, समाधान रणनीतियों, बाधाओं और बाध्य संस्करणों का उपयोग करके निर्भरता संस्करणों के टकराव का निदान और समाधान करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Groovy और Gradle: JVM स्वचालन और बिल्ड इंजीनियरिंग का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Groovy और Gradle: JVM स्वचालन और बिल्ड इंजीनियरिंग शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Groovy और Gradle: JVM स्वचालन और बिल्ड इंजीनियरिंग शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“संस्करण टकराव और निर्भरता बाधाएँ सुलझाना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Groovy और Gradle: JVM स्वचालन और बिल्ड इंजीनियरिंग पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Groovy और Gradle: JVM स्वचालन और बिल्ड इंजीनियरिंग पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. परियोजना निर्भरताएँ घोषित करना
  2. निर्भरता समाधान और कैशिंग
  3. कस्टम रिपॉज़िटरी और BOM
  4. संस्करण टकराव और निर्भरता बाधाएँ सुलझाना
← Groovy और Gradle: JVM स्वचालन और बिल्ड इंजीनियरिंग पर वापस जाएँ