Dependency Management Java In Hindi
जावा प्रोग्रामिंग लैंग्वेज में मेवेन डिपेंडेंसी मैनेजमेंट, जावा प्रोग्राम सॉफ्टवेयर सोर्स कोड प्रोजेक्ट के लिए एक एसेंशियल एक्सटर्नल लाइब्रेरीज़ को डिक्लेयर करने, ग्रुप या ऑर्गनाइज़ करने और कम्पलीट कंट्रोल करने का एक डिटेल प्रोसेस या मैकेनिज्म है।

जैसे, जावा प्रोग्राम में JUnit या Mockito टेस्टिंग फ्रेमवर्क JAR जैसी प्रोजेक्ट फ़ाइलों को मैन्युअल रूप से डाउनलोड करने के बदले, जावा यूजर उन्हें pom.xml फाइल में डिक्लेयर करते हैं, और Maven डिपेंडेंसी मैनेजमेंट फ्रेमवर्क अपने प्रोजेक्ट में उन्हें ऑटोमैटिक रूप से डाउनलोड और मैनेज करता है।
Declaring a Maven dependency management framework in a Java program.
Example of Maven dependency management.
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.12.2</version>
<scope>test</scope>
</dependency>
</dependencies>
Maven dependency management has some essential fields.
- groupId — यह आपके मेवेन डेपेंडेसी ऑर्गनाइज़ेशन/प्रोजेक्ट की पहचान करता है।
- artifactId — यह आपके मेवेन डेपेंडेसी लाइब्रेरी की पहचान करता है।
- version — यह आपके मेवेन डेपेंडेसी के मौजूदा वर्जन को इंडीकेट करता है कि कौन सा डेपेंडेसी वर्जन का यूज़ करना है।
- scope — यह आपके मेवेन डेपेंडेसी में यह तय करता है कि इसका स्कोप डिपेंडेंसी में कहाँ अवेलेबल है।
Java Dependency Scopes all Elements Details.
कॉमन जावा प्रोग्राम सोर्स कोड मेवेन डेपेंडेसी स्कोप में प्रमुख रूप से ये स्कोप इन्क्लुड हैं.
| # | Dependency Scope | Available During Scope | Typical Use of Scope |
| 1. | Compile scope | Its present at compile, test, runtime environment | It used in normal application dependencies management concept |
| 2. | Provided scope | Its present at compile, test time | It used in dependencies supplied by the runtime/server method |
| 3. | Runtime scope | Its present at test, runtime environment | It used in libraries needed at runtime environment |
| 4. | Test scope | Its present at test only mode | It used in junit, mockito java testing library framework |
| 5. | System scope | Its present at compile, test mode | It used in local system jar; generally discouraged mode |
Example of a Java dependency scope.
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>5.17.0</version>
<scope>test</scope>
</dependency>
जावा Mockito टेस्टिंग फ्रेमवर्क की ज़रूरत सिर्फ़ सोर्स कोड टेस्टिंग के लिए होती है, इस वजह से इसमें जावा यूजर का एक प्रॉपर टेस्ट स्कोप करेक्ट होना चाहिए।
Java Transitive Dependency Management.
जावा मैवेन डिपेंडेंसी मैनेजमेंट के सबसे इम्पोर्टेन्ट फ़ीचर में से एक ट्रांज़िटिव डिपेंडेंसी मैनेजमेंट तकनीक है।
Let’s assume, in your Java dependency management concept, that.
आपका जावा एप्लीकेशन डिपेंडेंसी मैनेजमेंट एप्लीकेशन
↓
लाइब्रेरी क्लास X
↓
लाइब्रेरी क्लास Y
यहाँ इस कंडीशन में क्लास लाइब्रेरी X को लाइब्रेरी Y की ज़रूरत है, तो मैवेन डिपेंडेंसी मैनेजमेंट अपने आप लाइब्रेरी Y की फाइल एलिमेंट को डाउनलोड कर सकता है।
इसमें ज़रूरी नहीं कि जावा यूजर को हर इनडायरेक्ट जावा डिपेंडेंसी अपने आप ही डिक्लेयर करनी पड़े।
<dependency>
<groupId>com.example</groupId>
<artifactId>library-a</artifactId>
<version>1.0</version>
</dependency>
यहाँ मैवेन डिपेंडेंसी मैनेजमेंट लाइब्रेरी X और उसकी ज़रूरी डिपेंडेंसी को सॉल्व और मैनेज करता है।
Java Dependency Conflicts Conditions.
यहाँ माना जावा प्रोग्राम में एक डिपेंडेंसी में कई बार कुछ कनफ्लिक्ट डेवलप हो सकते है.
यूजर एप्लिकेशन
├── लाइब्रेरी X → commons-lib 1.0
└── लाइब्रेरी Y → commons-lib 2.0
यहाँ डिपेंडेंसी ग्राफ़ में एक ही लाइब्रेरी के दो वर्शन मौजूद हैं।
जावा यूजर अपने प्रोग्राम में मैवेन डिपेंडेंसी मैनेजमेंट वर्जन को सलेक्ट करने के लिए डिपेंडेंसी मीडिएशन रूल्स को अप्लाई करता है, जिसमें सबसे पास की डिपेंडेंसी एक ज़रूरी रूल है।
जावा यूजर अपने प्रोग्राम में डिपेंडेंसी ट्री को इस तरह से डिस्प्ले कर सकते हैं.
mvn dependency:tree
Example of Conflicts Conditions.
[INFO] +- org.example:library-a:1.0
[INFO] | \- org.example:common-lib:1.0
[INFO] \- org.example:library-b:2.0
[INFO] \- org.example:common-lib:2.0
जावा प्रोग्राम डिपेंडेंसी कॉन्फ्लिक्ट को ट्रबलशूट करते समय यह बहुत ही यूज़फुल कांसेप्ट है।
Removing dependencies in Java programs.
जावा प्रोग्राम में कभी-कभी ट्रांज़िटिव डिपेंडेंसी की ज़रूरत नहीं होती है।
जावा यूजर इसे इस तरह से बाहर कर सकते हैं.
<dependency>
<groupId>org.example</groupId>
<artifactId>library-x</artifactId>
<version>1.0</version>
<exclusions>
<exclusion>
<groupId>org.example</groupId>
<artifactId>common-lib</artifactId>
</exclusion>
</exclusions>
</dependency>
यह मेथड जावा यूजर को मैवेन डिपेंडेंसी मैनेजमेंट को library-x के माध्यम से common-lib न लाने के लिए कहता है।
The <dependencies> vs. <dependencyManagement> concept in Java dependency management.
यहाँ इसमें यह डिफ्रेंस ज़रूरी है।
<dependencies>
रियल में यह एक प्रोजेक्ट में एक डिपेंडेंसी को ऐड करता है.
<dependencies>
<dependency>
<groupId>org.example</groupId>
<artifactId>common-lib</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<dependencyManagement>
यह जावा यूजर को मुख्य रूप से ऐसे वर्शन और कॉन्फ़िगरेशन को इंडीकेट करता है, जिन्हें इनहेरिट किया जा सकता है, या दोबारा यूज़ किया जा सकता है। यह अपने आप में प्रोजेक्ट के क्लासपाथ में डिपेंडेंसी को नहीं जोड़ता है।
Example of <dependencies> vs. <dependencyManagement>.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.example</groupId>
<artifactId>common-lib</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</dependencyManagement>
इसके साथ ही यह एक चाइल्ड मॉड्यूल फिर लिख सकता है.
<dependency>
<groupId>org.example</groupId>
<artifactId>common-lib</artifactId>
</dependency>
यहाँ इसमें वर्जन को दोबारा बताए बिना।
Why dependency management is important in Java.
जावा प्रोग्राम में एक अच्छा डिपेंडेंसी मैनेजमेंट जावा यूजर को हेल्प करता है.
- इससे जावा यूजर JAR फ़ाइलों को मैन्युअल रूप से डाउनलोड करने से बच सकता है।
- यह आपको जावा लाइब्रेरी वर्जन को एक जैसा रखने में हेल्प करता है।
- ट्रांज़िटिव डिपेंडेंसी को ऑटोमैटिक रूप से सॉल्व करता है।
- मल्टीप्ल जावा वर्जन कॉन्फ़्लिक्ट को फाइंड कर और उन्हें सॉल्व करता है।
- यह प्रोडक्शन और टेस्ट डिपेंडेंसी को आपस में अलग करता है।
- टेस्ट डिपेंडेंसी बिल्ड को रिप्रोड्यूसिबल बनाता है।
- यह मल्टी-मॉड्यूल प्रोजेक्ट कांसेप्ट को इजी करता है।
Special commands for Maven dependency management.
mvn dependency:tree
यह जावा कमांड प्रोग्राम टेस्टिंग में डिपेंडेंसी हायरार्की ट्री व्यू स्ट्रक्चर को रिप्रेजेंट करता है।
mvn dependency:analyze
यह कमांड अनयूज़्ड या अनडिक्लेयर्ड जावा डिपेंडेंसी को पहचानने में हेल्प करता है।
mvn clean install
यह जावा कमांड प्रोग्राम में डिपेंडेंसी प्रोजेक्ट को क्रिएट करता है, और उससे मिलने वाले आर्टिफैक्ट को लोकल मैवेन रिपॉजिटरी में इंस्टॉल करता है।
Conclusion of Dependency Management In Java.
In short, जावा मेवेन डिपेंडेंसी मैनेजमेंट जावा डेवलपर को यह डिक्लेयर करने में हेल्प करता है कि आपके प्रोजेक्ट को क्या चाहिए, जबकि मेवेन डिपेंडेंसी यह हैंडल करता है कि इसे कहां से लेना है, इसके लिए और क्या करना चाहिए, और ये डिपेंडेंसी एक साथ कैसे फिट होती हैं।

