Full transcript
Intro
0:00हां जी तो करें स्टार्ट। वेलकम बैक कोडर
0:03आर्मी हमारे इस जावा स्प्रिंग फ्रेमवर्क
0:05की सीरीज में और आज हम एक बहुत ही
0:07इंटरेस्टिंग टॉपिक मेवन के बारे में बात
0:09करने वाले हैं। अब मेवन है क्या? आप देखो
0:11जावा में जब आप एक प्रोजेक्ट लिखते हो तो
0:13उस प्रोजेक्ट को मैनेज करने के लिए ना
0:15आपको एक टूल चाहिए होता है। आपके पास
0:17मार्केट में बहुत सारे टूल्स अवेलेबल हैं।
0:18आपके पास मेवन है, ग्रेडल है। पर हम
0:21ज्यादातर मेवन को यूज़ करना पसंद करते हैं।
0:23एक तो वो वाइडली यूज़ होता है बहुत सारे
0:24प्रोजेक्ट्स में ऑलरेडी। ठीक है? और मेवेन
0:26को समझना भी बहुत इजी है। तो आज हम मेवेन
0:29के बारे में डेप्थ में जानने वाले हैं कि
0:31वो एक्चुअली है क्या? हमारे लिए क्या-क्या
0:32वो कर सकता है और हमारी लाइफ को वो कितना
0:34आसान बना देगा। ठीक है? तो चलो बहुत मजा
0:37आएगा। शुरू करते हैं मेवन आर्किटेक्चर के
0:39साथ। हां जी। तो मेवन को समझने से पहले ना
0:42हमें एक चीज समझनी पड़ेगी कि जार फाइल्स
What is JAR ?
0:45क्या होती हैं। राइट? हमने अपने लास्ट
0:47लेक्चर में भी देखा था कि हम जार फाइल
0:48बनाते हैं। है ना? जब हमने अपनी एक
0:50स्प्रिंग बूट की एप्लीकेशन को डाउनलोड
0:51किया था स्प्रिंग इनिशलाइजर से। तो पहले
0:53ये समझते हैं। ठीक है? तो देखो अभी तक जो
0:55हमें अपना फ्लो पता है वो क्या होता है कि
0:57लेट्स से हम कोई जावा का प्रोग्राम लिखते
0:59हैं और लेट्स से फाइल का नाम है डेमो डॉट
1:01जावा तो आपने इस जावा का जैसे ही
1:02प्रोग्राम लिखा आप क्या करोगे आप इसको एक
1:04कंपाइलर के थ्रू गुजारोगे और आपको मिलेगा
1:07आपका बाइट कोड जिसका एक्सटेंशन होता है
1:09डॉट क्लास फाइल ठीक है तो आपको डेमो डॉट
1:11क्लास फाइल मिलेगी और आपको पता है ये जो
1:13आपका बाइट कोड है इसको कोई भी जेवीएम रन
1:16कर सकता है और आपके प्रोग्राम का आ जाएगा
1:18आउटपुट है ना तो ये तो पता है हमें अपना
1:20नॉर्मल फ्लो कुछ इस तरीके से होता है पर
1:22आप सोचो किसी भी एक रियल वर्ड वर्ल्ड
1:24एप्लीकेशन में आप एक प्रोजेक्ट बिल्ड कर
1:26रहे हो जावा को लेके और जरूरी नहीं है वो
1:28एक वेब प्रोजेक्ट हो। आप हो सकता है कोई
1:29कंसोल बेस्ड प्रोजेक्ट बिल्ड कर रहे हो
1:31जिसमें बहुत सारे क्लासेस हो सकती हैं
1:33जावा की। तो लेट्स से आपके पास एक ऑर्डर
1:35क्लास है तो आपके पास हो गया ऑर्डर डॉट
1:37java है ना आपके पास एक यूजर क्लास हो
1:39सकती है। तो आपके पास ये हो गया यूजर डॉट
1:41java और लेट्स से आपके पास पेमेंट की
1:44क्लास हो सकती है। पेमेंट डॉट java एंड सो
1:46ऑन। आपके पास बहुत सारी फाइल्स हो सकती
1:49हैं। ठीक है? बहुत सारी जावा फाइल्स। अब
1:51अगर आप एक-एक करके इन्हें कंपाइल करोगे तो
1:54पहली बात तो बहुत टाइम लगेगा और अगर आपने
1:55कंपाइल कर भी दिया मान लो सबको एक साथ
1:57कंपाइल कर भी दिया तो उसके बाद आपकी बहुत
1:59सारी क्लास फाइल्स बन जाएगी। राइट? तो
2:01इसके अल्टरनेटिव डॉट क्लास होगी। एक यूजर
2:03के अल्टरनेटिव डॉट क्लास होगी। ठीक है?
2:06सेम आपकी पेमेंट के अल्टरनेटिव डॉट क्लास
2:08फाइल बन जाएगी। एंड सो ऑन। सबकी अपनी-अपनी
2:10एक क्लास फाइल बन जाएगी। अब मुझे बताओ अगर
2:13आपको इस एप्लीकेशन को या इस प्रोजेक्ट को
2:16अपने किसी फ्रेंड को शेयर करना है तो आप
2:17कैसे करोगे? राइट? अब एक तरीका तो यह है
2:20कि आप यह सारी क्लास फाइल्स उसके साथ शेयर
2:22कर दो ईमेल करके या किसी भी तरीके से। पर
2:25अगेन वह तो बहुत बेकार तरीका है। उसको
2:26सारी क्लास फाइल्स एक-एक करके डाउनलोड
2:28करनी पड़ेगी अपने सिस्टम पे और उसको रन
2:29करना पड़ेगा। इससे बेटर क्या करोगे आप? आप
2:32उसको ज़िप कर सकते हो एक फोल्डर में। राइट?
2:34आप उसको एक फोल्डर में ज़िप आउट कर दो।
2:35सारी क्लासेस को एक फोल्डर में डालो। उसको
2:37ज़िप कर दो और वो फोल्डर आप अपने फ्रेंड के
2:39साथ शेयर कर दो। फिर वो फ्रेंड आपका उस
2:41फोल्डर को अनजिप करके अपने इंटेलिज या
2:43किसी भी आईडी में उस फोल्डर को खोल के ये
2:45क्लासेस चला सकता है। ओके? अब टेक्निकली
2:48तो आप यह कर सकते हो पर यह बहुत अगली है।
2:51राइट? यह है यार ना बहुत सारी प्रॉब्लम्स
2:52आपके लिए क्रिएट कर देगा। अब यहां तो हमने
2:54तीन-चार फाइल्स ही बनाई है। पर आप मान लो
2:56एक रियल प्रोजेक्ट में 100्स ऑफ जावा
2:57फाइल्स हो सकती हैं। राइट? तो हो सकता है
2:59कुछ फाइल्स आपके साथ मिस आउट हो जाए। है
3:01ना? आपका फोल्डर स्ट्रक्चर वो ना रहे जो
3:03आपने इंटेंड किया था रहने के लिए। है ना?
3:05आपका फ्रेंड एक दूसरा फोल्डर स्ट्रक्चर
3:07यूज़ करें। ठीक है? और हो सकता है कुछ
3:09एक्स्ट्रा रिसोर्सेज हो। जैसे कि कुछ
3:10इमेजज़ हो या स्टैटिक रिसोर्सेज, कुछ
3:12प्रॉपर्टीज फाइल हो, है ना? जो मिस आउट हो
3:14जाए आपके फ्रेंड को शेयर होने के लिए।
3:16राइट? तो बहुत सारे इफ्स एंड बड्स हैं। तो
3:19ये अच्छा प्रोसेस नहीं है कि आप अपने
3:20प्रोजेक्ट को ज़िप करो या फिर एक-एक करके
3:22फाइल को शेयर करो। तो देखो ये तो हमें समझ
3:24आ गया कि ये अच्छा तरीका तो नहीं है राइट?
3:27अपनी फाइल्स को शेयर करने का। तो जावा को
3:29ना एक तरीका चाहिए था कि कैसे जावा
3:31डेवलपर्स अपने प्रोजेक्ट को या अपनी
3:33प्रोजेक्ट की मल्टीपल फाइल्स को शेयर कर
3:35सकें। और वहां से फिर जन्म होता है जार
3:37का। जार की फुल फॉर्म होती है जावा
3:39आर्काइव्स। जावा आर्काइव्स। ठीक है? और
3:42जार कुछ भी नहीं है। आप इसको एक जिप फाइल
3:44की तरह ही समझ सकते हो जिसके अंदर आप
3:46मल्टीपल डॉट क्लास फाइल स्टोर कर सकते हो
3:48और अपने फ्रेंड के साथ शेयर कर सकते हो।
3:50तो बेसिकली इसको हम क्या बोल सकते हैं? तो
3:53बेसिकली इसको हम बोल सकते हैं एक पैकेज।
3:55तो आपका जार एक पैकेज का काम करता है। ठीक
3:57है? जिसके अंदर क्या होता है? जिसके अंदर
3:59मल्टीपल क्लास फाइल्स हो सकती हैं। एंड
4:03नॉट जस्ट मल्टीपल क्लास फाइल्स। इसके अंदर
4:04मल्टीपल चीजें हो सकती हैं। राइट? जैसे कि
4:06मैं यहां पे लिखता हूं। इसके अंदर हो सकती
4:08हैं ऑब्वियसली मल्टीपल क्लास फाइल्स। ठीक
4:10है? इसके अंदर हो सकती है आपकी रिसोर्सेज।
4:12ठीक है? अब रिसोर्सेज जैसे कुछ इमेजज़ हो
4:15गया या कुछ प्रॉपर्टीज फाइल हो गई। राइट?
4:18ये सब इसके अंदर आ सकती है। और इसके अंदर
4:21आ सकता है आपका फोल्डर्स या आपके पैकेजेस।
4:23ठीक है? जितने भी आपने बनाए रखे हैं जावा
4:25में। बेसिकली उन सबको ये पैक कर देता है
4:27एक पैकेज के अंदर जिसको वो बोलता है जार
4:30जे एआर। और आप अपने फ्रेंड के साथ यह जार
4:33फाइल शेयर कर सकते हो। आपका फ्रेंड इस जार
4:35फाइल को अपने एप्लीकेशन के अंदर इंटीग्रेट
4:38कर सकता है और उसका काम आसान हो गया।
4:40राइट? तो बेसिकली अगर मैं मोटा-मोटा बोलूं
4:42ना तो जार फाइल के दो एडवांटेज हैं। ठीक
4:44है? एक तो आपका आप अपने कोड को आप अपनी
4:48लाइब्रेरी को आपके फ्रेंड के साथ शेयर कर
4:50सकते हो। तो मैं लिख सकता हूं टू शेयर योर
4:54जावा कोड ईजीली। अब मान लो आपने ना एक
4:57लाइब्रेरी बनाई। लेट्स से कैलकुलेटर। ठीक
Library vs Application
4:59है? अब सबसे पहले अ कई लोगों के मन में
5:02डाउट होता है कि एक लाइब्रेरी और
5:03एप्लीकेशन में क्या फर्क होता है? तो उसको
5:05समझ लो। ठीक है? लाइब्रेरी का मतलब कोई भी
5:07ऐसा कोड जो रनेबल नहीं है। राइट? उसके
5:09अंदर हो सकता है कोई मेन फंक्शन ना हो
5:11जिसको आप रन करो। राइट? उसके अंदर कुछ
5:12पैकेजेस, कुछ क्लासेस होंगी। ठीक है? और
5:14वो पैकेजेस या क्लासेस कोई और यूज़ कर सकता
5:17है। कोई और एप्लीकेशन यूज़ कर सकती है जो
5:19एक्चुअली रन हो सकती है। राइट? तो
5:21एप्लीकेशन मतलब जो एक्चुअली रन हो सकती है
5:23जिसके अंदर एक मेन फंक्शन होगा। वो उसको
5:25आप रन कर सकते हो पूरी की पूरी एप्लीकेशन
5:26को। राइट? और लाइब्रेरी मतलब जिसके अंदर
5:28कुछ क्लासेस हैं। आप उसको इंडिपेंडेंटली
5:30रन नहीं कर सकते। पर आप किसी लाइब्रेरी को
5:32किसी एप्लीकेशन के अंदर डाल सकते हो।
5:34राइट? हमने लास्ट क्लास में भी देखा था
5:35अगर आप एक लाइब्रेरी को किसी एप्लीकेशन के
5:38अंदर यूज़ करते हो तो वो लाइब्रेरी इस
5:39एप्लीकेशन के लिए डिपेंडेंसी बन जाती है।
5:41तो हम इसे स्प्रिंग बूट की भाषा में हम
5:43Aven की भाषा में डिपेंडेंसी बोलते हैं कि
5:45ये जो लाइब्रेरी है ना ये हमारे लिए एक
5:46डिपेंडेंसी है एप्लीकेशन के अंदर। ठीक है?
5:49तो हम फर्क समझ गए। अब हम बहुत सारी जावा
5:51की खुद से लाइब्रेरीज़ यूज़ करते हैं।
5:53इनबिल्ट लाइब्रेरीज़। तो वो इंडिपेंडेंट
5:55रनेबल कोड नहीं होता। वो बस क्लासेस होती
5:56हैं जिसको हम यूज़ कर सकते हैं। ओके? तो
5:58लेट्स से आपने कैलकुलेटर की एक लाइब्रेरी
6:00बनाई तो अगेन उसके अंदर आपने बहुत सारी
6:02क्लासेस लिखी होंगी। फाइनली उसको एक पैकेज
6:03बनाया होगा कैलकुलेटर डॉट जार के अंदर।
6:06ठीक है? अब आप ये लाइब्रेरी अपने फ्रेंड
6:07के साथ शेयर कर सकते हो और आपका फ्रेंड
6:09अपनी एप्लीकेशन के अंदर जो बेसिकली रनेबल
6:11एप्लीकेशन होगी उसके अंदर इस लाइब्रेरी के
6:14मेथड्स को और इस लाइब्रेरी की क्लासेस को
6:16यूज़ कर सकता है। राइट? तो ये तो हो गया कि
6:18रीज़न नंबर वन आप खुद अपने जावा कोड को
6:21इज़ली शेयर कर सकते हो। पर इससे भी एक
6:23इंपॉर्टेंट रीज़न है रीज़न नंबर टू कि आप
6:25अपने खुद की एप्लीकेशन में थर्ड पार्टी
6:27लाइब्रेरीज को इंटीग्रेट कर सकते हो। तो
6:29राइट? तो मैं लिख सकता हूं टू यूज़
6:32एक्सटर्नल लाइब्रेरीज़ योरसेल्फ। अब इसका
6:34क्या मतलब हुआ? लेट्स से बहुत सिंपल
6:35एग्जांपल लेते हैं कि आपने जावा का कोड
6:37लिखा और आपको ना डेटाबेस से कनेक्ट करना
6:40है अपने जावा के एप्लीकेशन को। राइट? तो
6:42अगर आपको जावा के एप्लीकेशन को डेटाबेस से
6:44कनेक्ट करना है। तो आपको एक डेटाबेस
6:45कनेक्टर चाहिए होगा। राइट? अगर आप My
6:47सीक्वल से हो तो आपको माय सीक्वल कनेक्टर
6:48चाहिए होगा। पोस्ट गैस के लिए पोस्ट गैस
6:50कनेक्टर चाहिए होगा वगैरह वगैरह। तो
6:51ऑब्वियसली आप वो कनेक्टर स्क्रैच से खुद
6:53से तो नहीं लिखोगे। राइट? तो एक थर्ड
6:54पार्टी लाइब्रेरी बनी होगी। है ना? आप
6:56उसको यूज़ करोगे। फॉर एग्जांपल Mys सीक्वल
6:58कनेक्टर के लिए Mys सीक्वल कनेक्टर डॉट
7:00जार फाइल आप डाउनलोड करोगे। तो लेट्स से
7:02आप डाउनलोड करते हो Mys सीक्वल कनेक्टर
7:05डॉट जार। ऑब्वियसली उसका नाम कुछ और हो
7:07सकता है। ठीक है? एग्जैक्ट नाम पर आप समझ
7:09गए कि हमने उसकी जार फाइल डाउनलोड करी
7:11होगी अपनी एप्लीकेशन के अंदर और उसको हमने
7:13यूज़ किया होगा। राइट? तो या तो आप अपना
7:15कोड शेयर कर रहे हो तब भी आप जार फाइल
7:17शेयर करते हो। इनफैक्ट जो आप थर्ड पार्टी
7:18लाइब्रेरीज यूज करते हो अपनी एप्लीकेशन के
7:20अंदर जो आप एज अ डिपेंडेंसी आपके लिए काम
7:22करती है तो वो भी आप एज अ जार फाइल ही यूज
7:25कर रहे होते हो। ठीक है? तो अब आप चाहे
7:27कोई स्प्रिंग बूट का प्रोजेक्ट बनाओ तो
7:28स्प्रिंग बूट के प्रोजेक्ट बनाने के लिए
7:30भी आपने कुछ डिपेंडेंसीज यूज़ की होगी। हो
7:31सकता है स्प्रिंग बूट की डिपेंडेंसी,
7:33स्प्रिंग एमवीसी की डिपेंडेंसी
7:34वगैरह-वगैरह। राइट? या फिर अगर आप कोई
7:36डेटाबेस से कनेक्ट करने का कोड लिखोगे।
7:38उसके लिए आप थर्ड पार्टी लाइब्रेरीज यूज़
7:39करोगे। इनफैक्ट आप बहुत सारी लाइब्रेरीज़
7:41अपने कोड में यूज़ करते हो। ठीक है? ओके।
7:44अब यहां पे एक इंटरेस्टिंग चीज और कई
7:47लोगों के मन में डाउट होता है कि लेट्स से
7:48मैंने बनाई अपनी खुद की एक एप्लीकेशन। ठीक
7:50है? उस एप्लीकेशन में मेरे खुद का कुछ कोड
7:52होगा। लेट्स से मेरा खुद का डेमो डॉट जावा
7:55कुछ फाइल हुई। कुछ फाइल हुई लेट्स से अ
7:57यूजर डॉट jवा वगैरह-वगैरह। ठीक है? कुछ
7:59मेरी खुद की जावा फाइल्स होंगी। कुछ मैं
8:01थर्ड पार्टी लाइब्रेरीज यूज़ करूंगा। लेट्स
8:03से मैंने Mys सीक्वल कनेक्टर डॉट जार फाइल
8:06यूज़ करी। ऐसे ही मान लो मैंने मल्टीपल जार
8:07फाइल्स और यूज़ करी है ना? तो जब मैं अपनी
8:10पूरी एप्लीकेशन का जार बनाऊंगा तो क्या जो
8:12मेरा जार प्रॉपर बनेगा उसके अंदर ये मेरी
8:14जो थर्ड पार्टी डिपेंडेंसीज है उनका जार
8:16भी प्रेजेंट होगा। अब इसका आंसर है कि
8:18डिपेंड करता है कि आपने एक एप्लीकेशन
8:19बिल्ड करी है या लाइब्रेरी बिल्ड करी है।
8:21अगर बिल्ड करी है आपने सिर्फ एक
8:23लाइब्रेरी। ठीक है? तो उस लाइब्रेरी के
8:25अंदर आपके जो एक्सटर्नल जार्स हैं वो
8:26प्रेजेंट नहीं होते। आपके पास बस आपके कोड
8:29प्रेजेंट होता है। ठीक है? अब आप बोलोगे
8:31तो भैया अगर कोई हमारी लाइब्रेरी यूज़ कर
8:32रहा है तो उसे कैसे पता लगेगा कि मेरी
8:34लाइब्रेरी को किसी और लाइब्रेरी की जरूरत
8:36है। राइट? यही तो हुआ। लेट से ये आपकी
8:38एप्लीकेशन नहीं है। ये आपकी एक लाइब्रेरी
8:40है। एक लाइब्रेरी। ठीक है? और आपकी
8:42लाइब्रेरी के अंदर दो फाइल्स हैं। डेमो
8:43डॉट जावा यूजर डॉट jवा जो अंदर से माय
8:46सीक्वल कनेक्टर डॉट जार एक जार फाइल यूज़
8:48करती है। और आपकी लाइब्रेरी को अब कोई यूज़
8:50करता है। तो आपने क्या किया होगा? अपनी
8:51लाइब्रेरी की एक जार फाइल बनाई होगी। ठीक
8:53है? तो मैं इसको ऐसे लिख सकता हूं। लेट्स
8:54से ये आपकी लाइब्रेरी है। आपने बनाया इसका
8:56एक जार और उसका नाम आपने रख दिया लेट्स से
9:00अय लाइब्रेरी डॉट जार।
9:03समथिंग लाइक दिस। ठीक है? तो आपका माय
9:05लाइब्रेरी डॉट जा आपका जा रहा है। है ना?
9:07और मैंने क्या कहा था अगर ये लाइब्रेरी है
9:08तो इसके अंदर ये वाला माय सीक्वल कनेक्टर
9:10प्रेजेंट नहीं होगा। तो जो भी आपकी
9:13लाइब्रेरी यूज़ करेगा उसे कैसे पता चलेगा?
9:14वो ऐसे पता चलेगा कि जो आपकी लाइब्रेरी है
9:16ना ये ठीक है? इसके अंदर होगी एक स्पेशल
9:19फाइल जो कि अभी हम देखेंगे वो कौन सी फाइल
9:21होती है। वो बताएगी कि इस लाइब्रेरी को
9:23चलने के लिए और फर्दर कौन-कौन सी
9:25लाइब्रेरीज की जरूरत है। तो बेसिकली जो
9:27आपका फ्रेंड होगा जो आपका my लाइब्रेरी
9:29यूज़ करना चाहेगा उसको पता रहेगा कि मेरे
9:31को इंडिपेंडेंसीज की भी जरूरत है। अब वो
9:33क्या इसको मैनुअली डाउनलोड करेगा? वो अभी
9:35हम आगे देखेंगे कि मेवन आपकी उसमें कैसे
9:37हेल्प करता है। बट अगेन यहां पे
9:39इंफॉर्मेशनेशन प्रेजेंट होती है। लेकिन
9:41अगर मान लो आपने बनाई है एक एप्लीकेशन और
9:43लेट्स से वो स्प्रिंग बूट एप्लीकेशन है।
9:45ठीक है? तो उसमें आपका खुद का कोई कोड
9:47होगा डेमो डॉट java यूजर डॉट java अब
9:49क्योंकि वो एक एप्लीकेशन है तो उसमें एक
9:51मेन डॉट java भी होगी राइट आपकी मेन फाइल
9:53जो रनेबल होती है और लेट्स से उसमें होगी
9:55कुछ डिपेंडेंसीज सेम मैं मान के चलता हूं
9:57माय सीक्वल कनेक्टर डॉट जार फाइल एक हो
10:00सकती है डॉट जार ठीक है इसको मैं कर देता
10:02हूं थोड़ा सा बड़ा कुछ इस तरीके से अब जब
10:05आप अपने इस एप्लीकेशन का जार बनाओगे तो
10:08लेट्स से माय एप्लीकेशन डॉट जार ठीक है
10:12इसको मैं थोड़ा सा इधर कर देता हूं कुछ इस
10:14तरीके से तो उस केस में क्या होगा? जो
10:16आपका माय एप्लीकेशन डॉट जार है, यह एक
10:18इंडिपेंडेंट जार है। इसको हम बोलते हैं
10:20एग्जीक्यूटेबल जार। एग्जीक्यूटेबल जार।
10:22ठीक है? यह इंडिपेंडेंटली एग्जीक्यूट हो
10:25सकता है। तो जैसे ही आपका फ्रेंड माय
10:26एप्लीकेशन डॉट जार को यूज़ करेगा, तो इसके
10:28अंदर जो फर्दर डिपेंडेंसीज़ हैं जैसे कि
10:30Mysql कनेक्टर वो भी अपने आप आ जाएंगी।
10:32उनको अलग से डाउनलोड करने की जरूरत नहीं
10:33होगी। ठीक है? तो आई होप आपको ये फर्क समझ
10:36आ गया होगा। लाइब्रेरी और एप्लीकेशन के
10:37बीच में क्या फर्क है। और जब आप जार बनाते
10:40हो एक लाइब्रेरी की तो क्या होता है? और
10:41जब आप जार बनाते हो एक एप्लीकेशन की फॉर
10:43एग्जांपल एक स्प्रिंग बूट एप्लीकेशन की तो
10:44क्या होता है? तो वो आपकी एक
10:45एग्जीक्यूटेबल जार बनती है। इस केस में ये
10:47नॉन एग्जीक्यूटेबल जार है। ये खुद
10:48एग्जीक्यूट नहीं हो सकती। इसके अंदर सिर्फ
10:50अपना डिटेल्स रहेंगी। अपनी जावा फाइल्स
10:52रहेंगी और जो भी एक्सटर्नल लाइब्रेरी होगी
10:54उसकी डिटेल यहां पे नहीं रहती है। वो इसके
10:56अंदर नहीं रहती है बल्कि वो डिटेल्स एक एक
10:58स्पेशल फाइल के अंदर मौजूद होती है यहां
11:00पे। राइट? वो स्पेशल फाइल एप्लीकेशन के
11:02अंदर भी होती है। राइट? वो स्पेशल फाइल का
11:03नाम है pm डॉट. एक्सml अगर आप मेवन यूज़ कर
11:05रहे हो। अभी उसके बारे में हम डिस्कस
11:06करेंगे। पर आई होप आपको समझ आ गया होगा कि
11:08यहां पे काम कैसे होता है। ठीक है? ओके।
11:11तो जब आप कोड लिखोगे ना अपना खुद का तो
11:13उसमें आपकी खुद की जावा कोड होंगे
11:15ऑब्वियसली प्लस आपकी कुछ थर्ड पार्टी
11:18लाइब्रेरीज होंगी। थर्ड पार्टी लाइब्रेरीज
11:20जिनको आपको पता है हम जार फाइल्स बोल सकते
11:22हैं। थर्ड पार्टी जार फाइल्स और इन दोनों
11:24को मिला करके आप क्या करोगे? इन दोनों को
11:26मिला करके आप करोगे कंपाइल और अगेन आपका
11:30कंपाइल कोड जेवीएम करेगा रन। राइट? ये तो
11:33हमें फ्लो पता है। ठीक है? आपका कंपाइल
11:35कोड रन होगा। अब आपको पता है ना जो थर्ड
11:37पार्टी लाइब्रेरीज हैं जिसकी आपने जार
11:38डाउनलोड करी होगी यह तो कंपाइल्ड कोड्स
11:41होगा। राइट? यह जो जार है इसके अंदर
11:43कंपाइल्ड कोड प्रेजेंट होता है जो कि हमने
11:45ऊपर भी देखा था। राइट? यहां पे ऑर्डर डॉट
11:47क्लास, यूजर डॉट क्लास, पेमेंट डॉट क्लास
11:49आपने इन सबको पहले कंपाइल किया और उसका
11:50पैकेज बनाया। हमेशा कंपाइल्ड कोड का पैकेज
11:53बनता है। तो ये तो ऑलरेडी कंपाइल है। यानी
11:55कि ये जो कंपाइलर ने कंपाइल किया होगा या
11:56सिर्फ आपके जावा कोड को कंपाइल किया होगा।
11:58तो जब आपका जावा कोड रन होने जाएगा जिसमें
12:01आपका खुद का भी कोड है और आपकी थर्ड
12:02पार्टी लाइब्रेरीज भी हैं। उस टाइम पे अगर
12:04आपका कोड यूज कर रहा है किसी थर्ड पार्टी
12:07लाइब्रेरी की कोई क्लास या उसका कोई मेथड
12:09तो कैसे पता चलता है हमारे जेवीएम को कि
12:10कौन से मेथड को कॉल करवाना है? राइट? तो
12:13यहां पे काम आता है हमारा क्लास पाथ। तो
12:15क्लास पाथ को आप एक स्पेशल प्लेस मान सकते
12:17हो जहां पे वो जावा की फाइल्स को सर्च
12:19करता है। तो सबसे पहले बेसिकली वो दिखेगा
12:21कि कोई भी क्लास क्या पहले आपके जावा कोड
12:23में प्रेजेंट है? अगर हां तो वो वहां से
12:25उसको यूज कर लेगा। अगर नहीं है तो वो इन
12:27चार फाइल्स के अंदर देखेगा इसके बाइट
12:29कोड्स के अंदर क्या वो वहां पे प्रेजेंट
12:30है। अगर वो वहां पे प्रेजेंट है तो वो
12:32वहां से उसको यूज़ कर लेगा। ठीक है? तो ये
12:34पूरा फ्लो होता है जब आप बेसिकली अपना कोड
12:36प्लस थर्ड पार्टी लाइब्रेरीज़ को यूज़ करते
12:38हो कंपाइल करके उसको रन करने के लिए। ठीक
12:40है? पर हमें तो मेवन को पढ़ना था और मेवेन
Introducing Maven
12:44को तो अभी तक हमने इंट्रोड्यूस ही नहीं
12:45किया कि मेवन एक्चुअली है क्या? क्या करता
12:47है वगैरह-वगैरह है ना? ठीक है? तो अब करते
12:50हैं अपने मेवन को इंट्रोड्यूस। ओके। तो आप
12:53इमेजिन करो कि आप खुद का कोई कोड लिख रहे
12:55हो। ठीक है? और आपको अपने कोड को ना
12:56डेटाबेस से कनेक्ट करना है। लेट्स से माय
12:58सीक्वल से। तो बेसिकली अगर आपको अपनी
13:00एप्लीकेशन को माय सीक्वल से कनेक्ट करना
13:02है ना तो सबसे पहले आपको चाहिए होगा एक
13:04कनेक्टर। अब कनेक्टर वो कौन सा होगा
13:05डिपेंड करता है आपका डेटाबेस कौन सा है।
13:07अगर पोस्ट ग्रेस है तो कोई और कनेक्टर
13:09चाहिए होगा। My सीक्वल है तो कोई और
13:10कनेक्टर चाहिए होगा। तो बेसिकली अगर मैं
13:12My सीक्वल से कनेक्ट कर रहा हूं तो मुझे
13:14चाहिए होगा एक माय सीक्वल कनेक्टर। तो
13:15बेसिकली मुझे ना Mys सीक्वल कनेक्टर के
13:17लिए एक जार फाइल डाउनलोड करनी पड़ेगी। तो
13:19मैं वो कैसे कर सकता हूं? अब एक तो बहुत
13:21सिंपल सा तरीका है कि बेसिकली मैं Google
13:23पे जाऊं और My सीक्वल कनेक्टर की जार फाइल
13:27को डाउनलोड कर लूं। जार फाइल डाउनलोड कुछ
13:29इस तरीके से। ओके? तो बेसिकली मैं ऐसे लिख
13:32सकता हूं my सीक्वल कनेक्टर jar डाउनलोड।
13:34मेरी सबसे पहले देखो my सीक्वल.com की ही
13:36वेबसाइट खुलेगी। उसके अंदर मैं गया और
13:38यहां पे देखो मुझे शो कर रहा है मेरा
13:39कनेक्टर। तो मैं चाहूं तो यहां से उसे
13:41डाउनलोड कर सकता हूं। 9.7.0 अपना ऑपरेटिंग
13:43सिस्टम चूज़ करूंगा और वहां से उसको
13:45डाउनलोड कर लूंगा। ठीक है? तो ये तो
13:46क्वाइट सिंपल है। पर आप सोचो कि क्या ये
13:49तरीका प्रैक्टिकल है? यहां पे तो मुझे एक
13:51ही जार डाउनलोड करनी थी तो मैंने
13:53डायरेक्टली उसको जाके डाउनलोड कर लिया। पर
13:54अगर आपको अपनी एप्लीकेशन में 100्स ऑफ जार
13:57फाइल्स चाहिए होगी जो कि आपको चाहिए होती
13:59हैं। अभी हम देखेंगे कैसे? राइट? बहुत
14:01सारी थर्ड पार्टी लाइब्रेरीज चाहिए होगी
14:03तो आप एक-एक करके उन्हें मैन्युअली
14:04डाउनलोड करोगे। राइट? दूसरा आप उनके
14:06वर्जनंस को कैसे मैनेज करोगे। अब देखो, जब
14:08आप स्प्रिंग फ्रेमवर्क के साथ काम करते हो
14:10ना, तो जनरली क्या होता आजकल हम यूज़ करते
14:12हैं स्प्रिंग सेवन को जो वर्क करता है
14:14स्प्रिंग बूट फोर के साथ। राइट? पर
14:17स्प्रिंग सिक्स को अगर आप यूज़ करोगे तो वो
14:18स्प्रिंग बूट 4 के साथ काम नहीं करेगा।
14:20राइट? तो ये वर्जन मिसमैच हो सकता है। तो
14:22हो सकता है आप स्प्रिंग सेवन की
14:23डिपेंडेंसी डाउनलोड कर लो। उसकी जार फाइल
14:25डाउनलोड कर लो। पर आप स्प्रिंग बूट थ्री
14:27की डिपेंडेंसी डाउनलोड करो। है ना? तो बीच
14:29में वर्जन मिसमैच हो जाएगा। तो आपको ये भी
14:31मैनेज करना पड़ेगा। ठीक है? तो बेसिकली एक
14:33तो बहुत सारा मैनुअल एफर्ट है। मैनुअल
14:36एफर्ट। यह तो आपने देख ही लिया। दूसरा
14:38वर्जनिंग मिसमैच हो सकती है।
14:41और वो आपको हैंडल करना पड़ेगा खुद के खुद
14:44से। राइट? तीसरा अगेन आप सोचो कि आपने एक
14:48डिपेंडेंसी डाउनलोड करी। फॉर एग्जांपल
14:49मैंने स्प्रिंग बूट फोर की डिपेंडेंसी
14:51डाउनलोड करी और ये फर्दर डिपेंड करती है
14:53अलग डिपेंडेंसीज पे। तो मुझे वो भी
14:55डाउनलोड करनी पड़ेगी। और अगेन मुझे उसके
14:57बारे में नॉलेज होनी चाहिए कि वो कौन सी
14:58डिपेंडेंसीज हैं। ठीक है? तो इसको मैं
15:00बोलता हूं ट्रांजिटिव डिपेंडेंसीज।
15:02ट्रांजिटिव डिपेंडेंसीज कि एक डिपेंडेंसी
15:04दूसरे पे डिपेंड करती है। तो मुझे वो सब
15:07भी डाउनलोड करनी पड़ेगी। तो बहुत सारे
15:09प्रॉब्लम्स हैं। अगर मैं मैनुअली इन सारी
15:11फाइल्स को डाउनलोड करने जाऊंगा। इनफैक्ट
15:13आप एक और चीज सोचो कि मैंने सारी
15:15डिपेंडेंसी डाउनलोड कर ली और मैं मेवन को
15:17यूज़ नहीं करता। मुझे नहीं पता मेवन क्या
15:18है। मैं उसको इंडिपेंडेंटली एक-एक करके
15:20डाउनलोड करता हूं और अपने कोड में उसको
15:22डाल देता हूं। ठीक है? तो जब मैं अपने कोड
15:24की जार फाइल बनाऊंगा और आपको पता है अगर
15:25मेरा वो जो कोड है वो लाइब्रेरी है राइट?
15:27ना कि एक एप्लीकेशन। तो जब मैं उसकी एक
15:29जार फाइल बनाऊंगा और अपने फ्रेंड को शेयर
15:31करूंगा तो मेरे फ्रेंड के पास कोई
15:33इंफॉर्मेशनेशन नहीं होगी कि मेरा खुद की
15:34जो एप्लीकेशन है वो कौन सी जार फाइल्स यूज़
15:36करती हैं। तो वहां पे अब मुझे क्या करना
15:38पड़ेगा? हो सकता है मुझे एक टेक्स्ट फाइल
15:40डालनी पड़े। उसमें अपनी सारी डिपेंडेंसीज
15:41को मैं लिस्ट करूंगा कि भाई अगर तेरे को
15:43मेरी लाइब्रेरी यूज़ करनी है तो ये सारी
15:44लाइब्रेरीज की लिस्ट है इन्हें डाउनलोड
15:46करी हो। फिर वो उन्हें डाउनलोड करेगा। अब
15:48मुझे नहीं पता उसने उसका कौन सा वर्जन
15:49डाउनलोड किया है। तो मुझे वहां पे और
15:51इनेशन देनी पड़ेगी। वर्जनिंग की इनफेशन कि
15:53एग्जैक्टली ये डाउनलोड करी हो। फिर उसको
15:55बहुत सारा मैनुअल एफर्ट करना पड़ेगा।
15:56राइट? तो बहुत सारी प्रॉब्लम्स यहां पे
15:58होती है। तो वहां पे आता है हमारा टूल
16:00मेविन। ठीक है? मेविन कहता है कि आपको ये
16:03कोई काम करने की जरूरत नहीं है। आप जब
16:04एप्लीकेशन लिखते हो या लाइब्रेरी लिखते हो
16:06तो आप अपने बिजनेस लॉजिक पे फोकस करो।
16:08अपने कोड पे फोकस करो। आप बस मुझे बता दो
16:11कि आपको कौन सी डिपेंडेंसी चाहिए और मैं
16:13खुद उसे डाउनलोड कर लूंगा। आपको मैनुअली
16:15जा के डाउनलोड करने की जरूरत नहीं है।
16:17इनफैक्ट अगर आपकी डिपेंडेंसी किसी और
16:19डिपेंडेंसी पे भी डिपेंड करती है। तो
16:21बेसिकली आपने लेट्स से स्प्रिंग बूट की
16:23डिपेंडेंसी डाली और वो फर्दर डिपेंड करती
16:25है मल्टीपल डिपेंडेंसीज पे। यानी कि
16:26ट्रांजिटिव डिपेंडेंसीज हैं तो मैं वो भी
16:29अपने आप डाउनलोड कर लूंगा। आपको वो बताने
16:31की भी जरूरत नहीं है। ठीक है? तो ये है
16:32मेवन का एक यूज़। मेवन के और बहुत सारे यूज़
16:35केसेस हैं। ठीक है? मेवन अभी मैं बताऊंगा
16:36एक्चुअली है क्या? पर आपको समझ आ गया होगा
16:38कि आपकी वो लाइफ कितनी आसान करने वाला है।
16:41ठीक है? ओके? तो मेवन को ना सबसे पहले हम
16:43डिफाइन करते हैं कि व्हाट इज़ मेन? तो अगर
16:45मैं मेवन को कम से कम शब्दों में
16:47एक्सप्रेस करना चाहूं ना तो मैं बोलूंगा
16:48मेवन है एक प्रोजेक्ट मैनेजमेंट टूल।
16:54टूल। ओके? क्या मतलब प्रोजेक्ट मैनेजमेंट
16:57टूल का? सिंपल सी बात है। ये आपके
16:59प्रोजेक्ट को मैनेज करता है। तो जब अपना
17:01कोड लिखते हो, एक एप्लीकेशन या लाइब्रेरी
17:03बनाते हो, मल्टीपल थर्ड पार्टी लाइब्रेरीज
17:04यूज़ करते हो, बहुत सारी कॉम्प्लिकेशंस
17:06होती हैं। मेवन कहता है मैं उन सारी
17:08कॉम्प्लिकेशंस को आपके लिए हैंडल कर
17:11लूंगा। तो अगर मैं आपको मोटा-मोटा बताऊं
17:13ना तो वो आपके लिए चार चीजें करता है। ठीक
17:14है? वो कौन सी चार चीजें हैं? देखो सबसे
17:16पहले वो आपके लिए मेंटेन करता है एक
17:19फोल्डर स्ट्रक्चर को। ठीक है? तो बेसिकली
17:21अभी हम वही देखेंगे। अभी हम इंटेलिजें पे
17:23जाकर के एक मेवन आर्किटेक्चर से खुद का एक
17:25कोड लिखेंगे तो आपको दिखेगा एक पर्टिकुलर
17:27फोल्डर स्ट्रक्चर वहां फॉलो हो रहा है। तो
17:29वो उसका एक स्टैंडर्ड फोल्डर स्ट्रक्चर है
17:31और वो कहता है कि मैं इसी को यूज़ करूंगा
17:33चेंज नहीं करूंगा। अब इससे फायदा ये होता
17:34है इमेजिन करो कि एक एप्लीकेशन पे मल्टीपल
17:37लोग काम कर रहे हैं एक टीम के अंदर। अगर
17:38सब अपना खुद का फोल्डर स्ट्रक्चर यूज़
17:40करेंगे तो कितनी चीजें कॉम्प्लिकेटेड हो
17:42जाएगी। किसी ने कोई मेन क्लास कहीं रखी
17:43हुई है। किसी ने कोई कोई कॉन्फ़िगरेशन
17:45क्लासेस कहीं और रखी हुई है। राइट? मेन
17:47कहता है नहीं एक फिक्स्ड फोल्डर स्ट्रक्चर
17:49रहेगा सबके लिए कॉमन। राइट? तो ये सबसे
17:51पहले तो लेके ला के देता है आपको एक
17:52फोल्डर स्ट्रक्चर। ये हेल्प करता है आपके
17:54जावा कोड को कंपाइल करने में। ठीक है? तो
17:56आप एक क्लिक से अपने पूरे जावा कोड को
17:58कंपाइल कर सकते हो। जितने भी क्लासेस हैं
18:00सबको एक एक बार के लिए कंपाइल कर देगा।
18:02ठीक है? तीसरा ये आपके लिए बनाएगा आपकी
18:05जार फाइल। तो आप अपने जावा कोड की जार
18:08फाइल भी बनवा सकते हो। इनफैक्ट कंपाइल
18:10करना, जार फाइल बनाना ये सब इसके एक लाइफ
18:12साइकिल का पार्ट है। ये इससे ज्यादा चीजें
18:14कर सकता है। अभी हम वो देखेंगे। इसमें
18:15बहुत सारे फ्रेजज़ आते हैं। क्लीन, कंपाइल,
18:18टेस्ट वगैरह-वगैरह। सो इसकी पूरी खुद में
18:20एक लाइफ साइकिल है। तो ये हमारे लिए
18:21फोल्डर स्ट्रक्चर बना सकता है। मोटा-मोटा
18:23हमारे कोड को कंपाइल भी कर सकता है। हमारे
18:25लिए जार फाइल भी बना सकता है हमारी खुद
18:26की। इनफैक्ट सिर्फ जार फाइल या कंपाइल
18:28करना नहीं मैंने अभी आपको बताया लाइफ
18:29साइकिल में और भी बहुत सारे काम कर सकता
18:31है। और ये कर सकता है आपके लिए
18:34डिपेंडेंसीज को डाउनलोड। डिपेंडेंसीज
18:36डाउनलोड। राइट? यानी कि दूसरी एक्सटर्नल
18:39जार फाइल्स को भी ये आपके लिए डाउनलोड कर
18:41सकता है। बहुत ईजीली। बहुत ही अमेजिंग टूल
18:44है आपकी लाइफ। बहुत आसान करने वाला है ये
18:45पूरे आपके आर्किटेक्चर में। ठीक है? ठीक
18:47है? तो एक बार ना इसको प्रैक्टिकली जा के
18:49देखते हैं। अब सबसे पहले आपको क्या करना
18:51है? आपको चाहिए होगा मेवन अपने सिस्टम के
18:53अंदर। उसके दो तरीके हैं। आप सबसे पहले
18:56जाओ मेवन डाउनलोड। ठीक है? आपको सबसे पहले
18:58Apache की वेबसाइट खुल जाएगी। Apache MV
18:59ये Apache का एक प्रोजेक्ट है और आप आ गए
19:01इसके होम पेज पे। यहां से आप चाहो तो इसको
19:03डाउनलोड कर सकते हो और अपने सिस्टम पे
19:05क्लास पाथ सेटअप करके इसको इंस्टॉल भी कर
19:07सकते हो। ठीक है? तो आप ये सब कर सकते हो।
19:10पर हमें ये सब करने की जरूरत नहीं है।
19:11इनफैक्ट आप कोई भी आईडी जो यूज करते हो
19:13जैसे हम इंटेलिजेंट यूज़ कर रहे हैं उसमें
19:15मेवन प्रीइस्टॉल्ड आता है। उसमें आप
19:17प्रोजेक्ट्स बना सकते हो जिसमें आप मेवन
19:18इंटरनली यूज़ कर सकते हो। उसके साथ काम कर
19:20सकते हो वगैरह-वगैरह। तो मैं क्या करता
19:21हूं? मैं डायरेक्टली चलता हूं अपने
Maven Project
19:23इंटेलिजेंट आईडिया पे। ठीक है? यहां पे
19:25मैं बनाने वाला हूं अपना खुद का एक न्यू
19:26प्रोजेक्ट। तो मैंने यहां पे क्लिक किया
19:27न्यू प्रोजेक्ट। इसको एक बार कर देते हैं
19:30थोड़ा सा बड़ा। तो सबसे पहले मुझे अपना नाम
19:32डालना है प्रोजेक्ट का। तो मैं डालता हूं
19:34लेट्स से मेव एंड डेमो। ठीक है? ओके। यहां
19:36पे आप अपनी लोकेशन सेलेक्ट कर सकते हो।
19:38मेरी यहां पे इंटेलिजेंट प्रोजेक्ट्स
19:39ऑलरेडी सेक्टेड है। आप खुद का कोई फोल्डर
19:41बना सकते हो। और देखो यहां पे मुझसे वो
19:43चूज़ करने को बोल रहा है बिल्ड सिस्टम। तो
19:45मेरे पास तीन ऑप्शन है। या तो मैं इंटेलिज
19:47का इनबिल्ट बिल्ड सिस्टम यूज़ करूं या मैं
19:49मेवन यूज़ करूं या मैं ग्रेडल यूज़ करूं।
19:51अगेन हम यहां पे मेवन यूज़ करने वाले हैं।
19:53अब आप सोचो अगर मैं इंटेलिज का इनबिल्ट
19:55बिल्ड सिस्टम यूज़ करता तो क्या प्रॉब्लम
19:57होती कि मैं तो इंटेलिजें का यूज़ कर लेता।
19:59लेकिन मेरी ही टीम में कोई और बंदा जो काम
20:01कर रहा है। हो सकता है वो मेवन यूज़ करे।
20:02कोई तीसरा बंदा ग्रेडर यूज़ करे। है ना? तो
20:04सबका फोल्डर स्ट्रक्चर और सबके बिल्ड
20:06सिस्टम्स बहुत अलग हो जाएंगे। बिल्ड
20:07सिस्टम का एग्जैक्ट मतलब क्या होता है?
20:09बिल्ड सिस्टम मेवन का तो बस एक पार्ट है
20:10कि आपके कोड को बिल्ड कैसे करना है?
20:12कंपाइल कैसे करना है? उसे पैकेज कैसे करना
20:14है? ये सब चीजें है ना? उसका फोल्डर
20:16स्ट्रक्चर भी वैरी करता। डिपेंडेंसीज कैसे
20:18डाउनलोड होती है वो सब भी वैरी करती। अगर
20:19आप इनमें से कुछ और चूज़ करते। है ना? तो
20:22हमने स्टैंडर्ड बनाने के लिए लेट से चूज़
20:24किया मेवन। ताकि मेरी टीम में बाकी लोग
20:26कोई भी आईडी यूज़ कर रहे हो। चाहे जैसे मैं
20:27इंटेलिजेंस कर रहा हूं। कोई हो सकता है
20:29एक्लिप्स को यूज़ कर रहा हूं। Knet BBS यूज़
20:31कर रहा हूं वगैरह वगैरह। उससे कोई फर्क
20:32नहीं पड़ेगा। सबका बिल्ड सिस्टम मेवन रहने
20:34वाला है। अब यहां पे मुझे चूज़ करना है
20:35अपने जावा का वर्जन। यहां पे अभी JD के 23
20:38सिलेक्टेड है। तो मैं 23 ही रहने देता
20:39हूं। ठीक है? यहां पे ऐड सैंपल कोड को
20:42मैंने टिक किया हुआ है कि ठीक है कोई
20:43सैंपल कोड मेरे पास आ जाएगा। और अगर मैं
20:45जाऊं एडवांस सेटिंग्स में तो वो मुझसे दो
20:46चीजें पूछता है। एक तो ग्रुप आईडी और एक
20:48आर्टिफेक्ट आईडी। अभी के लिए देखो ग्रुप
20:50आईडी में पड़ा है ऑर्ग डॉट एग्जांपल और
20:52आर्टिफेक्ट में पड़ा है मेवन डेमो। इसको
20:53मैं अभी के लिए ऐसे ही रहने देता हूं। कोई
20:54दिक्कत नहीं है। और मैं यहां पे करता हूं
20:56अपना प्रोजेक्ट क्रिएट। तो आप देखो जैसे
20:58ही मेरा प्रोजेक्ट क्रिएट होगा मुझे एक
21:00हायरार्की मिल जाएगी। मुझे एक प्रोजेक्ट
21:02स्ट्रक्चर मिल जाएगा। तो अभी के लिए ना
21:03मैं इस प्रोजेक्ट स्ट्रक्चर को कर देता
21:05हूं कोलैप्स। ठीक है? सब कुछ कोलैप्स। और
21:06यहां पे आप देख रहे हो मेरे पास कोई मेन
21:08फंक्शन भी है। उसको हम बाद में देखते हैं।
21:09इनफैक्ट ये जो ऑलरेडी इसने मेरे को कोड
21:11जनरेट किया है इसको मैं अभी डिलीट कर देता
21:13हूं। ठीक है? तो मेरे पास बिल्कुल क्लीन
21:14है। मेरे पास मेन फंक्शन है और मेन क्लास
21:16है। ओके? अब ना एक बार हम मेवन के फोल्डर
Maven Folder Strucutre
21:19स्ट्रक्चर को देखते हैं। तो देखो हमारे
21:21प्रोजेक्ट का नाम था मेवन डेमो। ठीक है?
21:23उसके अलावा यहां पे एक एक्सटर्नल
21:24लाइब्रेरीज हैं। इनफैक्ट यहां पे पता है
21:26क्या होने वाला है? यहां पे जो भी आप
21:28एक्सटर्नल लाइब्रेरी डाउनलोड करोगे जार
21:29फाइल्स डाउनलोड करोगे वो यहां पे आएगी। तो
21:31अभी यहां पे सिर्फ एक ही है ओपन jdk 23
21:33आपकी जावा 23 की जो एक्सटर्नल लाइब्रेरी
21:35है वो यहां पे है। अगर आप इसको खोलोगे तो
21:37जावा 23 अंदर से कौन सी लाइब्रेरीज यूज़
21:39करती है वो सब यहां पे आ जाएगा। ओके तो ये
21:41है आपका एक्सटर्नल लाइब्रेरीज। इसको आप
21:43बंद कर सकते हो। और इसके अलावा ये तो एक
21:45इंटरनल फोल्डर है। इसको आप छोड़ सकते हो।
21:46अगर हम मेवन डेमो के अंदर जाएं तो आपको
21:49मिलेगा मेनली एक सोर्स फाइल और एक पोम डॉट
21:51एक्सML फाइल। इसके अलावा ये तो आपको पता
21:53है गेट इग्नोर है ये एमवीएन ये मेबिन की
21:55इंटरनल फाइल है ये आईडिया इंटेलिजेंट
21:56इंटरनल फाइल है हमें इन सब से मतलब नहीं
21:58है हमें बस दो फाइल से मतलब है एक तो दो
22:00एक तो पैकेज है sआरसी और एक फाइल है pm
22:02डॉटexml ये जो pm डॉट एक्सML फाइल है ना
22:05ये बहुत जरूरी फाइल है मेवन के लिए सबसे
22:07जरूरी फाइल है pmxl ठीक है इसकी फुल फॉर्म
22:10होती है प्रोजेक्ट ऑब्जेक्ट मॉडल एक्सml
22:12अब इसके बारे में हम डेप्थ में समझेंगे
22:13क्या है ठीक है पर अभी के लिए मैं चलता
22:16हूं अपनी एसआरसी सोर्स फाइल के अंदर तो अब
22:18देखो इसने इसके अंदर क्या फोल्डर
22:19स्ट्रक्चर बनाया है इसके अंदर इसने दो चीज
22:21रखी हुई है एक मेन और एक टेस्ट। ठीक है?
22:23अब आप ध्यान से समझो। सबसे पहले सोर्स का
22:26मतलब क्या होता है? सोर्स का मतलब मेरा जो
22:27भी एप्लीकेशन है जो मैं बिल्ड करने वाला
22:29हूं वो इस सोर्स के अंदर रहने वाली है।
22:31राइट? अब उस सोर्स को अगर मैं ओपन करूंगा
22:32तो मेरे पास दो चीजें आएंगी। एक मेन कोड
22:34और एक टेस्ट कोड। तो मेन का मतलब जो भी
22:36मैं एप्लीकेशन में अपनी क्लासेस लिखूंगा
22:38वो सब आएंगी मेरी मेन के अंदर। और उसके जो
22:40टेस्ट केसेस अगर मैं लिखना चाहूंगा तो वो
22:42सब आएंगे मेरे टेस्ट के अंदर। राइट? तो
22:44आपको पता है आप अपनी स्प्रिंग बूट
22:45एप्लीकेशन को या जावा की किसी भी
22:46एप्लीकेशन के टेस्ट केसेस भी लिख सकते हो
22:48जिसको हम यूनिट टेस्ट कहते हैं। उसके लिए
22:49बहुत सारी लाइब्रेरीज हैं। मॉकेटो है, जे
22:51यूनिट है जिनको हम यूज़ कर सकते हैं जो कि
22:53हम करेंगे अभी इस सीरीज में यूज़। ठीक है?
22:55तो अगर मुझे अपने कुछ टेस्ट केसेस लिखने
22:57हैं तो वो मैं यहां पे लिख सकता हूं। तो
22:58बेसिकली मेरा रियल एप्लीकेशन कोड जो मेरा
23:00बिज़नेस लॉजिक है वो जाएगा मेन के अंदर।
23:02अगर मैं मेन को फर्दर ओपन करता हूं तो
23:04मुझे फिर दो फोल्डर मिलते हैं। एक java और
23:06एक रिसोर्सेज। अब यहां पे जावा का मतलब
23:08जितनी भी मेरी डॉट जावा फाइल्स होंगी
23:10एक्चुअल जावा कोड होगा। जैसे डेमो डॉट jवा
23:12मेन डॉट जावा या खुद का मैं जो भी जावा
23:14फाइल्स लिखूंगा वो सब मेरी यहां पे आएंगी
23:16और एक रिसोर्सेज की देखो डायरेक्टरी बनी
23:18हुई है। जितनी भी मेरी नॉन जावा फाइल्स
23:20हैं लेट से मेरी कोई टेक्स्ट फाइल, मेरी
23:22कोई स्टैटिक इमेजज़, मेरी कोई प्रॉपर्टीज
23:24राइट? वो सब आएंगी मेरी इस रिसोर्स फाइल
23:27के अंदर। अब इंटरेस्टिंगली अगर मैं इस
23:28जावा फोल्डर को अंदर से खोलता हूं। यहां
23:30पे मेरा फोल्डर स्ट्रक्चर कैसा हो जाता
23:32है? आपने याद है हमने इसने हमसे दो चीजें
23:35पूछी थी। ग्रुप आईडी डॉट आर्टिफेक्ट आई थी
23:37जो हमने नीचे एडवांस सेटिंग्स में चूज़
23:38किया था। और हमने इसको ऐसे ही रहने देता।
23:40हमारी ग्रुप आईडी थी ऑर्ग डॉट एग्जांपल और
23:42आर्टिफेक्ट आईडी थी हमारी मेवन डेमो। इसने
23:45देखो ग्रुप आईडी का एक फोल्डर स्ट्रक्चर
23:47बना दिया। जावा के अंदर ऑर्ग डॉट एग्जांपल
23:49है। अब यहां पे ना डॉट से कंफ्यूज मत
23:51होना। यहां पे डॉट का मतलब होता है तो
23:53सबसे पहले जावा के अंदर फोल्डर है ऑर्ग और
23:55उस ऑर्ग के अंदर एक और फोल्डर है
23:56एग्जांपल। अब क्योंकि ऑर्ग के अंदर अभी एक
23:59ही फोल्डर है एग्जांपल इसलिए उसने उसको
24:01ऑर्ग डॉट एग्जांपल कर दिया। राइट? पर ये
24:03दोनों अलग-अलग फोल्डर हैं। इसको प्रूफ
24:05करने के लिए मैं क्या करता हूं? ऑर्ग के
24:06अंदर एक और फोल्डर बना के दिखाता हूं
24:07आपको। तो लेट्स से मैंने यहां पे किया
24:08न्यू पैकेज और मैं ऑर्ग के अंदर लेट्स से
24:12एग्जांपल टू करके एक फोल्डर बनाता हूं। तो
24:15अब देखो ये दोनों अलग-अलग हो गए। एक ऑर्ग
24:16है उसके अंदर दो फोल्डर हैं। एग्जांपल और
24:18एग्जांपल टू। ठीक है? तो इसको मैं फिर से
24:20डिलीट कर देता हूं। मुझे इसकी जरूरत नहीं
24:21है। डिलीट। ठीक है? तो ऑर्ग डॉट एग्जांपल
24:25को जब आप खोलोगे उसके अंदर है आपका मेन
24:28कोड। राइट? इनफैक्ट मैं जितनी भी अपनी खुद
24:31की जावा फाइल बनाऊंगा मैं इस ऑर्ग डॉट
24:33एग्जांपल के अंदर ही बना रहा हऊंगा। तो
24:35मैं चाहूं तो इसके अंदर अपनी खुद की एक और
24:37जावा फाइल बना सकता हूं। लेट्स से मैं
24:39लिखता हूं डेमो ये डॉट जावा इसको अपने आप
24:41लगा देगा। डेमो डॉट jवा ठीक है? एक और
24:43फाइल बन गई। मैं यहां पे एक और फाइल बना
24:45सकता हूं। लेट्स से मैं लिखता हूं डेमो
24:46टू। ठीक है? तो यहां पे मेरी डेमो 2 डॉट
24:48jवा एक और फाइल बन गई। तो मैं सारी अपनी
24:50जावा फाइल्स यहां पे लिखने वाला हूं। और
24:52मेरी मेन फाइल ये रही। ठीक है? अब इसके
24:55अंदर मैं अपने खुद के फोल्डर बना सकता
24:56हूं। लेट्स से पहले मैं एक पैकेज बनाऊं और
24:58डॉट एग्जांपल डॉट लेट्स से मैं एक नाम
25:01रखता हूं कंट्रोलर। इनफैक्ट हम स्प्रिंग
25:03बूट में कंट्रोलर एक डायरेक्टरी जरूर
25:05बनाते हैं। वो हम देखेंगे क्यों बनाते
25:06हैं। और इसके अंदर जाकर के मैं अपना एक
25:09फाइल बना सकता हूं। लेट्स से हेलो
25:10कंट्रोलर जिन्होंने मेरी लास्ट वीडियो
25:12देखी होगी उनको पता होगा हम यहां पे क्या
25:14कर रहे हैं। ठीक है? कुछ इस तरीके से। तो
25:16ये सब फोल्डर स्ट्रक्चर वो मेरे को बना के
25:18देता है। इसके अंदर मैं अपनी खुद की जावा
25:20की फाइल्स बना सकता हूं। ठीक है? अभी के
25:22लिए मैंने रैंडमली बनाए थे। इसकी कोई
25:23जरूरत नहीं है। यहां पे ये ये मुझे जाना
25:25है अपने मेन कोड के अंदर। ठीक है? ये उसने
25:27मेरे को प्रीजनरेट करके दिया था। तो अगर
25:29मैं उस पे टिक नहीं करता ना कि सैंपल कोड
25:31जनरेट करना तो वो मेरी ये मेन फाइल भी
25:33जनरेट नहीं करता। मुझे खुद से बनानी
25:34पड़ती। तो मैंने उसको बोल दिया कि तू मुझे
25:36प्रीजनरेट करके दे दे। ओके? अब ना ये तो
25:39हो गया हमारा पूरा का पूरा मेन का
25:40स्ट्रक्चर। यहां पे देखो एक और फोल्डर है
25:42टेस्ट। मैंने क्या कहा था? जितने भी हमारे
25:44टेस्ट केसेस होंगे वो इस टेस्ट फोल्डर में
25:46जाएंगे। तो अगर मैं इसको दोबारा ओपन करूं
25:47हां तो ये मेरी सारी फाइल्स थी मेन के
25:49अंदर। और मैं टेस्ट को खोलूंगा तो ये यहां
25:51पे अगेन मेरे पास एक फोल्डर आता है जावा।
25:53तो देखो बिल्कुल यहां पे भी जावा फोल्डर
25:54है। यहां पे भी जावा फोल्डर है। और ये
25:56फोल्डर है मेरा पूरा खाली। अब मैं आपको
25:58बताता हूं कि जब आप अभी यहां पे तो कोई
26:00टेस्ट फाइल है ही नहीं। राइट? पर जब आप
26:02खुद की कोई टेस्ट फाइल इंट्रोड्यूस करोगे
26:03तो वो कैसे आएगी? तो जब आप टेस्ट फाइल
26:05इंट्रोड्यूस करोगे ना उसका फोल्डर
26:07स्ट्रक्चर भी बिल्कुल सेम रहने वाला है जो
26:08इसका रहेगा। राइट? अभी तो यहां पे खाली
26:10है। कोई टेस्ट फाइल नहीं है और मेबेन ने
26:12खाली प्रोजेक्ट बनाया तो यहां पे हमने
26:13उसको तो उसने हमें ऐसे ला के दे दिया। पर
26:16याद करो लास्ट लेक्चर में जब हमने एक
26:17स्प्रिंग बूट एप्लीकेशन को डाउनलोड किया
26:19था स्प्रिंग इनिशलाइजर पे जाके। उसने ना
26:21हमें एक पैकेज दिया था जिसमें हमारी टेस्ट
26:23फाइल भी थी। राइट? तो एक काम करते हैं।
26:25अपनी ना लास्ट एप्लीकेशन भी साइड बाय साइड
26:27खोल लेते हैं जो हमने लास्ट क्लास में
26:29बनाई थी। और उसकी डायरेक्टरी देखते हैं
26:31कैसे होती है। अगर आपने लास्ट क्लास अटेंड
26:33नहीं की थी या वो फाइल आपके पास नहीं है
26:34तो आपको कुछ नहीं करना। आपको जाना है एक
26:36स्प्रिंग इनिशलाइजर वेबसाइट पे। यहां पे
26:38आप इसके अंदर गए और आपको क्रिएट करना है
26:40अपना फोल्डर स्ट्रक्चर। ठीक है? तो मैं
26:42आपको फटाफट बताता हूं। आपको प्रोजेक्ट में
26:43चूज़ करना है मेवन लैंग्वेज में जावा।
26:45स्प्रिंग बूट का कोई भी वर्जन यूज़ कर
26:47लेना। ठीक है? जब मैंने लास्ट यूज़ किया था
26:494 आई गेस 0.6 था शायद है ना? तो वो वर्जन
26:52यहां पे अब है नहीं। 0.7 है या 1.0 है।
26:54कोई भी चूज़ करना बट फोर वर्जन ही यूज़
26:56करना। ठीक है? स्नैपशॉट्स यूज़ मत करना
26:58क्योंकि ये अभी वर्क इन प्रोग्रेस है। ठीक
26:59है? इसमें कुछ बग्स हो सकते हैं। तो आप या
27:01तो 4.0.7 या ये यूज़ कर सकते हो। और जब तक
27:04हो सकता है आप ये वीडियो देखो नए वर्जनंस
27:05आ गए हो। तो आप फोर के वर्जन में यूज़ करना
27:07क्योंकि हम स्प्रिंग बूट 4 यूज़ करना चाहते
27:09हैं। इन सबको ऐसे ही रहने देना। कॉम डॉट
27:10एग्जांपल, डेमो ये सब। और पैकेजिंग में हम
27:12चूज़ करेंगे जार। कॉन्फ़िगरेशन में
27:14प्रॉपर्टीज और java का कोई भी वर्जन आप
27:16चूज़ कर सकते हो। मैंने यहां पे 21 चूज़
27:18किया हुआ है। ठीक है? और फिर आपको एक
27:19डिपेंडेंसी ऐड करनी है। लेट्स से उसका नाम
27:22है स्प्रिंग वेब। स्प्रिंग वेब ये वाली।
27:24ठीक है? यहां से ऐड डिपेंडेंसी। और उसके
27:26बाद आपको करना है जनरेट। अगर आपको समझना
27:28है इन सबका मतलब क्या है? तो आप लास्ट
27:29वीडियो जा के देख सकते हो। ठीक है? और
27:31फाइनली जब आप करोगे जनरेट आपको एक ज़िप
27:33फाइल मिलेगी। उस ज़िप फाइल को आपको अनज़िप
27:35करना है और अपने इंटेलिजें पे जाके उसको
27:37ओपन करना है। ठीक है? तो जब आप उसे ओपन
27:39करोगे, आपका कुछ ऐसे फोल्डर स्ट्रक्चर खुल
27:41जाएगा। अब यहां पे तो मैंने यह खोला हुआ
27:42है जो मैंने लास्ट लेक्चर में यूज़ किया
27:44था। ठीक है? आपका फोल्डर स्ट्रक्चर
27:45ऑलमोस्ट सिमिलर दिखेगा। उसमें कुछ चीजें
27:47नहीं होंगी वो मैं अभी आपको बता दूंगा। तो
27:48देखो यहां पे अपना फोल्डर स्ट्रक्चर खोलूं
27:50तो डॉट आईडिया इसको हम इग्नोर कर सकते
27:52हैं। एमवीएन को इग्नोर कर सकते हैं। अगेन
27:54हमारे पास सोर्स फाइल है। ये सब इंटरनल
27:55फोल्डर्स हैं। हमारे पास अगेन सोर्स फाइल
27:57है। एक देखो आपको मिलेगी टारगेट फाइल। ये
27:59हमारी यहां पे नहीं थी। हमारे पास यहां पे
28:01सोर्स थी और सीधा pम xml थी। ठीक है? यहां
28:04पे टारगेट है और फिर फाइनली एक pmxl है।
28:06अगेन इन सब फाइल को आप इग्नोर कर सकते हो।
28:08तो गेट इग्नोर है। ये हेल्प डॉट है
28:09वगैरह-वगैरह। तो देखो यहां पे मुझे एक
28:11टारगेट फोल्डर एक्स्ट्रा मिल रहा है। ये
28:13क्या है? तो आपको शॉर्ट में बता दूं। हमने
28:15क्या किया था? लास्ट क्लास में अपना खुद
28:17का एक फाइल लिखी थी। अगर मैं यहां पे मेन
28:19के अंदर जाऊं जावा के अंदर तो देखो मैंने
28:21यहां पे डेमो एप्लीकेशन ये तो मेरे को
28:23स्प्रिंग बूट में दिया था और मैंने यहां
28:24पे खुद का हेलो कंट्रोलर लिखा था। जिन
28:26लोगों ने अभी डाउनलोड किया है प्रोजेक्ट
28:27उनके पास ये नहीं होगा। कोई बात नहीं। मैं
28:29क्या करता हूं? सबसे पहले इस टारगेट को
28:30यहां से रिमूव कर देता हूं। तो मैं यहां
28:32पे इसको क्लीन कर रहा हूं। अभी बताऊंगा ये
28:34क्या हो रहा है। ठीक है? अभी समझने की
28:35जरूरत नहीं है। ठीक है? तो यहां मेरा
28:37टारगेट फोल्डर रिमूव हो गया। अब हमारा
28:38फोल्डर स्ट्रक्चर ऑलमोस्ट सिमिलर दिख रहा
28:40होगा। अब अगेन हम अपनी स्प्रिंगboot
28:41एप्लीकेशन का फोल्डर स्ट्रक्चर देखेंगे ना
28:43तो सोर्स के अंदर मेन है जैसे यहां पर था
28:45उसके अंदर जावा है उसके अंदर है हमारा
28:47ग्रुप आईडी का नाम कॉम डॉट एग्जांपल जो
28:50आपने यहां से चूज़ किया था देखो ग्रुप आईडी
28:52कॉम डॉट एग्जांपल उसके अंदर है डेमो कॉम
28:55डॉट एग्जांपल डॉट डेमो डेमो था आपका
28:57आर्टिफेक्ट आईडी का नाम राइट तो फोल्डर
28:59स्ट्रक्चर ऐसा कि कॉम के अंदर है एग्जांपल
29:01एग्जांपल के अंदर है डेमो अब क्योंकि सबके
29:03अंदर एक-एक फोल्डर है इसलिए उसने डॉट यूज़
29:04किया हुआ है जैसे ही आप एक और फोल्डर
29:06डालोगे उसको वो अलग-अलग फोल्डर में
29:07डिस्ट्रीब्यूट कर देगा और उसके अंदर हमारी
29:09हमारी जावा फाइल्स हैं डेमो एप्लीकेशन ये
29:12हमें स्प्रिंग बूट ने अपने आप बना के दी
29:13है और ये हमने खुद से लिखा था हेलो
29:15कंट्रोलर ठीक है इसको आप इग्नोर कर सकते
29:17हो और इसके अलावा देखो मैंने क्या कहा था
29:19रिसोर्स फोल्डर है यहां पे तो हमारा सोर्स
29:21मेन java के अंदर रिसोर्स फोल्डर खाली
29:24पड़ा हुआ था क्योंकि मेवन का खाली
29:26प्रोजेक्ट था पर क्योंकि ये स्प्रिंग बूट
29:27का स्टार्टर प्रोजेक्ट है तो जो सब
29:29कॉन्फ़िगरेशंस हमें चाहिए वो स्प्रिंग बूट
29:31ने ऑलरेडी दे रखी हैं। तो अगर आप
29:32रिसोर्सेज को ओपन करोगे तो देखो इसने हमें
29:34दो फोल्डर बना के दे रखे हैं स्टैटिक
29:36टेंपल्लेट्स। तो अगर आपका कोई टेंप्लेट्स
29:37आप यहां डाल सकते हो। कोई स्टैटिक रिसोर्स
29:39है, कोई इमेज वगैरह आप यहां डाल सकते हो।
29:40और इसने आपको दी है एक प्रॉपर्टी फाइल
29:42एप्लीकेशन डॉट प्रॉपर्टीज़। अगर आपको याद
29:45होगा तो हमने यहीं पे पोर्ट नंबर भी चेंज
29:47किया था। राइट? तो ये आपकी रिसोर्सेज हो
29:49गई। और अगेन यहां पे है आपकी टेस्ट का
29:51फोल्डर। राइट? अब देखो यहां पे तो टेस्ट
29:53का फोल्डर के अंदर सिर्फ जावा था और वो
29:55खाली पड़ा हुआ था। लेकिन स्प्रिंगboot ने
29:57हमें जावा के अंदर हायरार्की बना के दी
29:58हुई है। java के अंदर अगेन कॉम ड.example
30:00डॉट डेमो। देखो बिल्कुल सेम कॉम.
30:02डॉ.example. डेमो उसके अंदर डेमो
30:04एप्लीकेशन टेस्ट। तो बेसिकली ये जो हमारा
30:06मेन एप्लीकेशन थी ना उसकी टेस्ट फाइल लिखी
30:08हुई है यहां पे। राइट? तो कहने का मतलब आप
30:10जो भी यहां पे कोड लिखने वाले हो, खुद की
30:12जावा फाइल लिखने वाले हो उसके टेस्ट फाइल
30:14आप लिखोगे यहां पे और उसका भी फोल्डर
30:16स्ट्रक्चर सेम मेंटेन करोगे। यानी कि अगर
30:18मुझे अपने हेलो कंट्रोलर की टेस्ट फाइल
30:19लिखनी है तो बेसिकली उसको मैं लिखूंगा
30:21यहां पे इसके अंदर हेलो क्लास और लेट्स से
30:24मैं लिखता हूं हेलो
30:27कंट्रोलर
30:28टेस्ट। कुछ इस तरीके से देखो हेलो
30:31कंट्रोलर टेस्ट। तो ये कौन सी टेस्ट फाइल
30:33हो गई मेरी? हेलो कंट्रोलर की। अब टेस्ट
30:34फाइल्स कैसे लिखते हैं वो बाद की बात है।
30:36ठीक है? पर आई होप आपको फोल्डर स्ट्रक्चर
30:38समझ आ गया होगा। अब इंटरेस्टिंगली मैंने
30:40कहा था कि यहां पे ना मेरा एक टारगेट
30:42फोल्डर आ रहा था। राइट? जो मेरे स्प्रिंग
30:44बूट एप्लीकेशन में आ रहा था और वो उन्हीं
30:46बच्चों को आ रहा होगा जिन्होंने लास्ट
30:47क्लास में मेरे साथ काम किया था। ठीक है?
30:49अगर आपने नया किया है तो आपको यहां पे
30:50नहीं आ रहा होगा। कोई बात नहीं। उसको हम
30:52अभी वापस लेके आते हैं और मैं बताता हूं
30:53वो क्या है। सबसे पहले अपने मेव एंड डेमो
30:55पे वापस जाते हैं। ठीक है? यहां पे टारगेट
30:57फोल्डर लेके आते हैं। तो लेट्स से मैं
30:59यहां पे कुछ कोड लिखता हूं। ठीक है? तो
31:00लेट्स से अभी के लिए सिंपल मैं यहां पे
31:02हेलो
31:04वर्ल्ड प्रिंट करना चाहता हूं। तो मैंने
31:06यहां पर हेलो वर्ल्ड प्रिंट किया। और आपको
31:07पता है अगर मैं इसको रन करूंगा तो स्क्रीन
31:09पे हेलो वर्ल्ड आ जाएगा। पर रन करने का
31:10मतलब क्या होता है? जैसे ही मैं ये बटन
31:12प्रेस करूंगा आपको पता है अंदर से क्या
31:13होगा? अंदर से मेरा कोड कंपाइल होगा। उसके
31:16बाद वो रन होगा। राइट? तो जैसे ही मेरा
31:18कोड कंपाइल हो के रन होता है। कंपाइलेशन
31:20करने का काम किसका है? क्योंकि मैंने यहां
31:22पे मेवन चूज़ किया हुआ है। मेरा मेवन का
31:23प्रोजेक्ट है। तो मेरे जावा के कोड को
31:25कंपाइल करने का काम होगा मेवन का। राइट?
31:27यानी कि मेवन मेरी सारी चीजें हैंडल करने
31:29वाला है। मेरे कोड को कंपाइल करना, उसको
31:30पैकेज करना, जार फाइल बनाना वगैरह-वगैरह।
31:32वो सब हम देखेंगे अभी मेवन के लाइव साइकिल
31:34में। इनफैक्ट अगर आप यहां पे देखोगे ना
31:36आपको मेवन का आइकॉन शो हो रहा होगा। ठीक
31:38है? आप यहां पे क्लिक करो। अगर यहां पे
31:40आपको नहीं हो रहा है आप सेटिंग्स में जाकर
31:41के यहां पे मेवन को मेवन का आइकॉन ऑन कर
31:43सकते हो। एक बार आपने मेवन को क्लिक किया
31:45ना देखो यहां पे आपको दिखेगा मेवन डेमो जो
31:47हमारा फोल्डर है। ठीक है? उसके अंदर आप
31:49जाओ और आपको मल्टीपल चीजें मिलेंगी। मेवन
31:51की लाइफ साइकिल, कुछ प्लगइंस और
31:52रेपोजिटरीज। अभी लाइफ साइकिल के अंदर आप
31:54जाओगे ना देखो आपको मल्टीपल फसेस मिलेंगे।
31:56क्लीन, वैलिडेट, कंपाइल, टेस्ट। ये सब
31:58क्या है वो भी हम आगे देखेंगे। पर लेट्स
31:59से आप यहां पे क्लिक करते हो कंपाइल पे।
Compiling code & Target folder
32:01जैसे आप क्लिक करोगे ना आपका जावा का कोड
32:03कंपाइल हो जाएगा और जो भी इसकी कंपाइल्ड
32:06फाइल्स हैं वो यहां पे एक स्पेशल फोल्डर
32:08टारगेट के अंदर आ जाएंगी। तो या तो मैं
32:10यहां पे कंपाइल क्लिक कर सकता हूं या तो
32:12यहां से मैं डायरेक्टली उस कोड को रन कर
32:13सकता हूं। तो पहले मैं यहां पे कंपाइल
32:15करके दिखाता हूं। देखो मैंने जैसे ही
32:16कंपाइल पे क्लिक किया ये देखो मेरा कोड
32:18कंपाइल हो रहा है और मेरा बिल्ड सक्सेस
32:19मेरा कोड कंपाइल हो गया। तो मेरा बाइट कोड
32:21बन गया होगा। अब वो कहां बना है? आप नीचे
32:23देखो। ये देखो मेरा अपने आप एक टारगेट
32:25फोल्डर बन गया। अब मैं इस टारगेट फोल्डर
32:27को अगर ओपन करूं टारगेट को तो देखो मेरे
32:29पास यहां पे मल्टीपल फोल्डर हैं। क्लासेस,
32:31जनरेटेड, सोर्सेस, मेव एंड स्टेटस। अब मैं
32:32क्लासेस के अंदर जाऊंगा तो देखो मेरे पास
32:34सेम फोल्डर स्ट्रक्चर आ जाएगा। ऑर्क के
32:36अंदर है एग्जांपल। ऑर्क के अंदर है
32:37एग्जांपल। उसके अंदर है कंट्रोलर, उसके
32:39अंदर है कंट्रोलर। डॉट एग्जांपल के अंदर
32:41मेरे तीन फाइल्स हैं। डेमो, डेमो डोमेन,
32:43डेमो, डेमो डोमेन। उन तीनों फाइल का यहां
32:45पे उसने कंपाइल्ड कोड लिख दिया। ठीक है?
32:47अगर मैं आपको दिखाऊं इसमें से कोई फाइल
32:49लेट से मेन खोलते हैं तो यहां पे देखो मेन
32:51डॉट क्लास फाइल खुलेगी नॉट मेन डॉट जावा
32:53क्योंकि ये बाइट कोड है पर यहां पे तो
32:54हमें नॉर्मल कोड दिख रहा है अगेन इसके
32:56बारे में हमने जावा में बात की थी कि आपका
32:57जो आईडी है हमारी जो कोई भी आईडी है वो
32:59क्या करती है बाइट कोड को वापस से कन्वर्ट
33:00कर लेती है किसमें मेन सोर्स में सोर्स
33:02कोड के अंदर ठीक है तो वो आप इग्नोर कर
33:04सकते हो पर देखो यहां पे मेन डॉट क्लास
33:05अगर मैं कोई और फाइल खोलूंगा तो देखो डेमो
33:07डॉट क्लास ये सब आपके बाइट कोड्स हैं। ठीक
33:10है? तो मेवन को बाइट कोड रखने का भी एक
33:12प्रॉपर तरीका पता है कि मैं फोल्डर
33:14स्ट्रक्चर सेम बनाऊंगा। जैसे मैंने यहां
33:15बनाया था और उनके बाइट कोड एज इट इज
33:18रखूंगा। जैसे डेमो का बाइट कोड यहां पे
33:19डेमो टू मेन। ठीक है? सेम फोल्डर
33:21स्ट्रक्चर और सेम हरार्की के अंदर। ठीक
33:23है? तो ये हमने किया था कंपाइल और हमारा
33:25ये फोल्डर क्रिएट हो गया था। इनफैक्ट अगर
33:27आप इस फोल्डर को डिलीट भी कर दोगे यहां पे
33:28मैंने इसको कर दिया डिलीट। ठीक है? तो
33:30इसको दोबारा लाने का एक सिंपल तरीका है।
33:32आप दोबारा अपना कंपाइल कर लो। या फिर आप
33:34अपना कोड कर लो रन। अब देखो यहां पे एक
33:35इंटरेस्टिंग चीज़ जब मैं अपने कोड को रन
33:38करूंगा इस ग्रीन बटन पे क्लिक करके रन मेन
33:40डॉट java तो मेरा स्क्रीन पे हेलो वर्ल्ड
33:42तो प्रिंट हो जाएगा उसकी कोई दिक्कत नहीं
33:44है। पर मेरा हेलो वर्ल्ड प्रिंट होने के
33:46लिए जो जेबीए मेरे कोड को रन किया होगा
33:48उससे पहले मेरा कोड कंपाइल स्टेज से गुजरा
33:50होगा। है ना? तो मेरा कोड कंपाइल हुआ
33:52होगा। उसकी बाइट कोड बनी होगी। पर ये बाइट
33:54कोड क्या मेरा मेवन बना रहा है एग्जैक्टली
33:56यहां पे? आंसर है नहीं। देखो होगा क्या?
33:58जब मैं इस पे क्लिक कर रहा हूं तो मेरे
34:00इंटेलिजे का बिल्ड सिस्टम है। तो इस
34:02इंटेलिज के बिल्ड सिस्टम से मेरा कोड पहले
34:04कंपाइल होगा और इंटेलिजे ही मेरे कोड को
34:06रन करेगा। पर यहां पे इंटेलिजें को पता है
34:09कि अंदर से क्योंकि मैं मेवन यूज़ कर रहा
34:10हूं और मेवन का बिल्ड सिस्टम यूज़ कर रहा
34:13हूं। तो जो मेरा कंपाइल्ड कोड है ना वो
34:15रखेगा बिल्कुल सिमिलर फोल्डर में वो
34:17टारगेट फोल्डर बनाएगा। उसके अंदर सेम
34:18फोल्डर स्ट्रक्चर जो हमने अभी देखा था और
34:20वहां पे ही उन कोड को रखेगा। कोई अलग से
34:23फोल्डर सिस्टम नहीं बनाएगा। राइट? तो ये
34:25बहुत इंटरेस्टिंग तरीका है। तो हमें ऐसा
34:26लगता है कि मेवन के थ्रू ही कंपाइल हो रहा
34:28है और इसका और इसमें कोई फर्क नहीं है। पर
34:30एग्जैक्टली अगर हम अंदर तक जाएंगे तो फर्क
34:31है। तो अगर मैं देखो यहां पे क्लिक करता
34:33हूं तो मेरा कोड यहां पे बिल्ड हुआ होगा।
34:35फिर रन हो गया होगा हेलो वर्ल्ड और आप
34:36देखोगे तो टारगेट फोल्डर अगेन बन गया है।
34:38क्लासेस के अंदर अगर आप जाओगे तो अगेन सेम
34:40फोल्डर स्ट्रक्चर है और ये सब है आपकी डॉट
34:43क्लास फाइल। ठीक है? ओके। आई होप आपको ये
34:46सब समझ आया। अगर आपको समझ आया ना कि ये सब
34:48क्या कर रहा है। फोल्डर स्ट्रक्चर बना रहा
34:49है। आपके कोड को कंपाइल करेगा। आपके आपकी
34:51जार फाइल भी क्रिएट करेगा। इनफैक्ट मैं
34:53आपको यह भी करके दिखा देता हूं। तो लेट्स
Creating JAR
34:55से मैं अपने मेवन पे गया तो यहां पे देखो
34:58बहुत सारी लाइफ साइकिल है। मेरे को एक
35:00क्लिक करना है पैकेज पे। अभी पूरी लाइफ
35:01साइकिल क्या है वो मैं थोड़ी देर में
35:02बताऊंगा। जैसे ही देखो मैं पैकेज पे क्लिक
35:04करूंगा मेरा कुछ कोड रन होगा थोड़ी देर के
35:07लिए और यहां पे वो बना देगा मेरा एक
35:09पैकेज। और आप इसको ध्यान से देखोगे तो
35:11देखो मेरी यहां पे डॉट जार फाइल बन रही
35:13है। उसका एग्जैक्टली नाम क्या है?
35:14बिल्डिंग जार। अब मेरी जार फाइल का नाम
35:16देखो मेवन डेवो hन 1.0 hfन snapshot डॉट
35:20जार। अगेन ये नाम इंपॉर्टेंट है। आपको
35:22थोड़ी देर में बताऊंगा क्यों। पर अब ये
35:23जार फाइल मेरी आई कहां होगी। अब देखो मेरा
35:25यहां पे अगेन एक टारगेट फोल्डर बन गया।
35:27टारगेट फोल्डर में मेरी क्लासेस के अंदर
35:29तो आ गई मेरा कंपाइल्ड कोड। इसको मैं छोड़
35:31देता हूं। पर अगर आप नीचे जाओगे तो देखो
35:33ये रही मेरी जार फाइल। यानी कि टारगेट
35:36फोल्डर के अंदर ही मेरे मेरे मेवन ने मेरी
35:38जार फाइल को रख दिया। तो ये पूरा पैकेज
35:40है। इसमें मेरी सारी चीजें प्रेजेंट होगी
35:42जो भी मैंने यहां पे लिखी है। और इसको मैं
35:43अपनी जार फाइल को किसी के साथ शेयर कर
35:45सकता हूं। राइट? पर अगेन हमें मैनुअली
35:48शेयर करने की जरूरत नहीं है। हम मेवन यूज़
35:50कर रहे हैं तो उसको हम यूज़ करेंगे। तो
35:51देखो हमने तीन चीजें देख ली। फोल्डर
35:52स्ट्रक्चर कंपाइल को करता है हमारे कोड
35:54को। हमारे लिए जार फाइल बनाता है। और उसका
35:56चौथा पॉइंट था कि वो हमारे लिए
35:58डिपेंडेंसीज को भी डाउनलोड कर सकता है। ये
36:00बहुत इंपॉर्टेंट पॉइंट है। और इसे देखने
36:03के लिए हमें अपने जेवीएम की सबसे
36:05इंपॉर्टेंट फाइल पोम डॉटexml को समझना
36:08पड़ेगा। सबसे पहले यहां पे पोम की फुल
36:10फॉर्म क्या है? पोम की फुल फॉर्म है
36:12प्रोजेक्ट ऑब्जेक्ट मॉडल। अब क्या मतलब
36:15होता है? पॉम का एक बार उसके अंदर जाके
36:17देखते हैं। तो देखो सबसे पहले तो मैं आता
36:19हूं अपने मेवन प्रोजेक्ट पे जो हमने अभी
36:22बनाया था। इस टारगेट को बंद करते हैं और
36:24अपना ये मेन डॉट jवा फाइल है। हेलो वर्ल्ड
36:26यहां पे हमने प्रिंट किया हुआ था। हम सबसे
36:28पहले चलते हैं अपने pm डॉट एक्सml फाइल
Understanding Pom.xml
36:30में इस वाली फाइल में। तो देखो ये आपको
36:32दिखेगी एक्सML फाइल। ठीक है? अब क्योंकि
36:34ये बिल्कुल खाली प्रोजेक्ट है। अभी तक
36:36हमने इसमें कुछ डिपेंडेंसीज नहीं इंस्टॉल
36:38की हुई हैं। तो आपको फॉर्म बहुत छोटा
36:40दिखेगा। पर जैसे-जैसे हम कॉन्फ़िगरेशन
36:42सेटअप करते हैं, नई डिपेंडेंसीज डालते
36:44हैं, इस फॉर्म का साइज बढ़ता रहता है। अगेन
36:46हम देखेंगे उसको, सब कुछ समझेंगे। इस
36:48एक्सml में सारी चीजें क्या हैं? पर सबसे
36:50पहले ये पोम आपको बताता क्या है? अब ये
36:52पूरा का पूरा एक्सML है ना? सबसे पहले मैं
36:54इसको बंद कर देता हूं। हां। अब सबसे पहले
36:55पोमट एक्सml आपको बताता क्या है? ये ना
36:58मेवन को या आपको प्रोजेक्ट के बारे में
37:00कंप्लीट इंफॉर्मेशनेशन देता है। जैसे
37:02प्रोजेक्ट का नाम क्या है? उसका वर्जन
37:03क्या है? आपके प्रोजेक्ट में कौन-कौन सी
37:05थर्ड पार्टी लाइब्रेरीज हैं? कौन से आपके
37:08प्रोजेक्ट में प्लगइिंस हैं। अब प्लगइिंस
37:09क्या होता है वो हम देखेंगे। ठीक है? तो
37:11बेसिकली आपके प्रोजेक्ट के बारे में
37:12कंप्लीट इंफॉर्मेशनेशन स्टोर करता है
37:14pm.xml फाइल और मेवन के लिए सबसे जरूरी
37:17फाइल है। तो अगर मैं इस pml को ओपन करूं
37:20तो देखो मेरे पास ये सारे xml
37:22कॉन्फ़िगरेशंस हैं। इसको एक-एक करके समझते
37:24हैं। सबका मीनिंग क्या है? बहुत सिंपल है।
37:26सबसे पहले देखो आपको रूट टैग मिलेगा।
37:27प्रोजेक्ट टैग। देखो ये रहा प्रोजेक्ट टैग
37:29जो बताएगा हम एक पॉम डॉट एक्सml फाइल को
37:31शुरू कर रहे हैं। तो हर पॉम स्टार्ट होता
37:33है एक प्रोजेक्ट टैग से। ठीक है? उसके बाद
37:35आपको यहां पे कुछ तीन लाइंस मिलेंगी ये
37:37वाली। ठीक है? ये क्या है? ये आपको बताती
37:40है आपके पोम का स्कीमा डिजाइन। बेसिकली
37:42आपके पोम के रूल्स। अब कैसे रूल्स? फॉर
37:44एग्जांपल इसमें बहुत सारे टैग्स होंगे। अब
37:46ये एग्जाम टैग्स हैं। राइट? और आपको अगर
37:48पता होगा बेसिक आईडिया एक्सेल टैग्स क्या
37:50होता है? किसी टैग से ओपन होते हैं। तो एक
37:52ओपन टैग होता है उसमें और उसमें क्लोजिंग
37:54टैग होता है। कुछ इस तरीके से। ठीक है? अब
37:56ये जो हमारी तीन लाइंस है, ये स्कीमा
37:58बताती है कि आपका जो डिज़ाइन है, वो क्या
38:01होगा? उसमें कौन-कौन से रूल्स होंगे?
38:03कौन-कौन से टैग्स अलाउड है। जैसे इसमें
38:04मॉडल वर्जन अलाउड है। ठीक है? इसमें ये
38:07टैग्स अलाउड हैं, ये टैग्स अलाउड हैं
38:08वगैरह-वगैरह। और इसमें और कौन-कौन से मैं
38:10नए टैग्स डाल सकता हूं। तो कुछ टैग्स
38:12अलाउड होंगे। कुछ टैग्स नहीं अलाउड होंगे।
38:13ऐसा नहीं है कि मैं खुद का कोई भी टैग डाल
38:15दूंगा। लेट से मैंने ए बी सी करके एक ओपन
38:17क्लोज टैग डाल दिया। राइट? अगर मैं इसमें
38:19होवर करूंगा तो देखो मुझे आ जाएगा इनवैलिड
38:21कॉन्टेक्स्ट वाज़ फाउंड। इसको पता ही नहीं
38:22है टैग क्या है। ये रूल्स के अगेंस्ट है।
38:24ऐसा थोड़ी एग्जाम है तो आप कोई भी टैग डाल
38:26दोगे। तो क्या रूल्स हैं आपके प्रोजेक्ट
38:28के? क्या स्कीमा है उसका? ये सब बताते हैं
38:29ये तीन चीजें। ठीक है? उसके बाद आता है
38:32हमारा एक मॉडल वर्जन। अब मॉडल वर्जन क्या
38:34बताता है? मॉडल वर्जन बताता है कि आपके
38:36पोम का वर्जन क्या है? अब यहां पे ध्यान
38:39से सुनना। मैं बात कर रहा हूं पोम के मॉडल
38:40के ना कि आपके मेवन के मॉडल के। ठीक है?
38:43तो मेवन का वर्जन कुछ भी हो सकता है। मैं
38:44पोम के वर्जन की बात कर रहा हूं। पोम का
38:46वर्जन है 4.0.0।
38:48ठीक है? ओके? उसके बाद आते हैं हमारे सबसे
38:51जरूरी तीन टैग्स जीएवी। ग्रुप आईडी,
38:54आर्टिफेक्ट आईडी और वर्जन। ये तीनों टैग्स
38:56मिलाकर के आपके पूरे के पूरे प्रोजेक्ट को
38:59यूनिकली आइडेंटिफाई करते हैं। देखो हर
39:02प्रोजेक्ट में ना एक ग्रुप आईडी होती है,
39:03एक आर्टिफेक्ट आईडी और एक वर्जन। ठीक है?
39:05ये बताता है कि आपके प्रोजेक्ट का नाम
39:08यूनिकली क्या होगा पूरी दुनिया में और ये
39:10किसी का नाम नहीं हो सकता। ये बिल्कुल
39:12यूनिक होगा। कैसे देखते हैं। सबसे पहले
39:14ग्रुप आईडी। अब ग्रुप आईडी सबसे पहले वो
39:16होनी चाहिए जो यूनिक है। राइट? तो बेसिकली
39:19अगर आप अपने पूरे प्रोजेक्ट का एक जार
39:21फाइल बनाओ और उसको आप इंटरनेट पे अपलोड
39:23करो तो उस नाम से और कोई जार फाइल नहीं
39:26होनी चाहिए। राइट? ये आपको मेक श्योर करना
39:28है ताकि अगर कोई आपकी लाइब्रेरी यूज़ करना
39:30चाहता है तो वो इंडिपेंडेंटली आपकी
39:31लाइब्रेरी का नाम डाल सके। पर अब आप सोचो
39:33आप अपने नाम को यूनिक कैसे करोगे? तो
39:36इसमें ना हम एक बहुत अच्छा नोमेनक्लेचर
39:38यूज़ करते हैं। ठीक है? और अगेन ये
39:40स्प्रिंग ओरिएंटेड नहीं है। ये मेवन
39:41ओरिएंटेड है। हम क्या करते हैं? हमारे
39:43दुनिया में सबसे यूनिक नाम क्या होता है
39:45हमारे डोमेनस का? तो जो भी हमारा डोमेन है
39:47जैसे कि coderm.in हमारा डोमेन है तो हम
39:50उसको यूज करते हैं एज एन ग्रुप आईडी
39:52क्योंकि सबका डोमेन यूनिक होता है। है ना?
39:54और उसको यूज़ करते हैं उल्टा करके। तो फॉर
39:56एग्जांपल अभी तो यहां पे ऑर्ग डॉट
39:58एग्जांपल लिखा हुआ है। तो अगर मैं चाहूं
40:00तो इसकी जगह अपने कोडर आर्मी का डोमेन यूज़
40:01कर सकता हूं। मेरा डोमेन है कोडर आर्मी.in
40:03तो मैं कर सकता हूं इन डॉट coder आर्मी
40:06कोडर आर्मी। कुछ इस तरीके से इससे पता लग
40:09जाएगा कि ये जो प्रोजेक्ट है ये जो जार
40:11फाइल बनेगी ये मेरी कंपनी को बिलोंग करती
40:13है। राइट? अब आप बोलोगे भैया मेरे पास तो
40:15खुद की कोई डोमेन नेम है ही नहीं। कोई बात
40:17नहीं। हम उसकी जगह आराम से अपना ऑर्ग डॉट
40:20एग्जांपल यूज़ कर सकते हैं। कोई दिक्कत
40:21नहीं। हमें तो प्रैक्टिस करनी है। पर
40:22बताने का बस तरीका था कि आप एक डोमेन नेम
40:24यूज़ कर सकते हो और उसका नोमेनक्लेचर या
40:26उसका कन्वेंशन क्या है? उसको उल्टा करके
40:28फॉर एग्जांपल मेरा डोमेन हैर आर्मी.in तो
40:29मैं लिखूंगा in डॉट कोडर आर्मी। इनफैक्ट
40:31उसके आगे भी मैं लगा सकता हूं कुछ। in
40:33डॉटर आर्मी डॉट लेट्स से कोर्स या in डॉट
40:36कोडर आर्मी डॉट java in डॉट कोडर आर्मी
40:38डॉट स्प्रिंग। तो एक प्रॉपर यूआरएल रख
40:40सकता हूं मैं यहां पे एज अ ग्रुप आईडी।
40:42आर्टिफेक्ट आईडी का मतलब होता है मेरे
40:43प्रोजेक्ट का नाम। तो मैंने अभी देखो अपने
40:45प्रोजेक्ट का नाम रखा हुआ है मेवन डेमो।
40:46तो ये मेरा आर्टिफेक्ट आईडी हो गया और
40:48यहां पे होता है वर्जन। तो बाय डिफॉल्ट
40:50अभी हमने इसको पहली बार बनाया तो मेवन ने
40:51इसके वर्जन का नाम रख दिया 1.0 स्नैपशॉट।
40:54राइट? यहां पे याद है आपको स्नैपशॉट क्या
40:56होता है? हमने लास्ट क्लास में डिस्कस
40:57किया था कि जब हम स्प्रिंग इनिशियलाइजर
40:59यूज़ करते हैं अपने प्रोजेक्ट को बिल्ड
41:01करने के लिए। तो स्नैपशॉट्स वो सारे
41:02प्रोजेक्ट्स होते हैं जो अभी वर्किंग फज़
41:04में है। राइट? अभी काम उस पे चल रहा है।
41:06हो सकता है उसमें कुछ बग्स हो। तो इसके
41:07हिसाब से भी क्योंकि आप अपने प्रोजेक्ट को
41:09अभी बना रहे हो। राइट? आपका प्रोजेक्ट
41:11वर्किंग स्टेज पे है। इसलिए उसने यहां पे
41:13नाम रखा हुआ है स्नैपशॉट। अगेन ये
41:14कन्वेंशन है। आप जब हो सकता है आप अपना
41:16प्रोजेक्ट कंप्लीट कर दो और इस वर्जन को
41:18आप यहां पे स्नैपशॉट को हटा करके सेव कर
41:20दो कि अब आपका ये प्रॉपर वर्जन हो चुका
41:22है। काम पूरा कंप्लीट हो चुका है। आपने
41:24टेस्टिंग कर ली। कोई बग्स नहीं है ताकि कल
41:26को आपकी कोई जार फाइल जो आप यहां पे
41:27बनाओगे उसको आराम से यूज़ कर सकें। राइट?
41:30अगेन ये कन्वेंशन है। उसके बाद दिखेंगी
41:32आपको कुछ प्रॉपर्टीज़। अब प्रॉपर्टीज़ क्या
41:34होता है? प्रॉपर्टीज़ का मतलब होता है की
41:36वैल्यू पेयर। जिसमें देखो ये आपकी की है।
41:38ठीक है? और ये अंदर आपकी वैल्यू है। राइट?
41:40अब एग्जाम में तो आपको पता है अगर आप कोई
41:42टैग ओपन करते हो तो आप उसको क्लोज भी करते
41:44हो। तो ये आपको की ये आपकी एक की
41:46रिप्रेजेंट कर रहा है। तो आपने की को ओपन
41:47किया की को क्लोज कर दिया और अंदर है आपकी
41:50वैल्यूज़। तो यहां पे देखो कुछ की वैल्यूज़
41:51हैं। जैसे मेव इन कंपाइलर सोर्स क्या है?
41:5323। कंपाइलर टारगेट सोर्स क्या है? 23 और
41:56आपका कुछ सोर्स एनकोडिंग है यूटीएफ 8
41:59वगैरह-वगैरह। अब ये अगेन उसने खुद से
42:00जनरेट की है। है ना? हमें इससे मतलब नहीं
42:02है। अगर हम यहां पे कोई और की रखना चाहें
42:04तो वो भी रख सकते हैं। फॉर एग्जांपल मैं
42:06यहां पे रख सकता हूं लेट्स से java डॉट
42:09वर्जन और उसको मैं रखता हूं 23 क्योंकि
42:11मैं 23 का जावा वर्जन यूज़ कर रहा हूं। ठीक
42:13है? तो मैं चाहूं तो इसको एक की बना सकता
42:15हूं। इनफैक्ट मैं यहां पे खुद का कोई भी
42:17फालतू की की बना सकता हूं। लेट्स से नेम अ
42:20लेट्स से लेट्स से ऑथर ऑथर डॉट नेम। तो ये
42:24मैंने खुद की की बना दी और यहां पे नाम रख
42:25दिया आदित्य। ठीक है? ऑथर डॉट नेम आदित्य।
42:28यहां पे मुझे कोई एरर नहीं आएगा क्योंकि
42:29प्रॉपर्टीज में मैं खुद का कुछ भी की
42:30वैल्यू यूज़ कर सकता हूं। इनफैक्ट इस की
42:32वैल्यू को अगर मुझे कहीं फॉर्म में पूरी
42:35जगह यूज़ करना है तो मेरे पास एक तरीका
42:37होता है। मैं क्या करूंगा? अब मान लो मैं
42:39चाहता हूं कि जब मैं इस वर्जन को स्टोर
42:41करूं ना तो मेरा स्टोर हो 1.0 Snaps hfन
42:44आदitya। तो मैं बेसिकली यहां पे आदित्य
42:46चाहता हूं मैं। ठीक है? ये मैं कर सकता
42:47हूं। ये तो मेरा वर्जन है। कुछ भी चाहूं।
42:49तो मैं यहां पे आदित्य या तो डायरेक्टली
42:50लिख दूं या फिर क्योंकि मैंने इसमें अपनी
42:52की वैल्यू में उसको सेव किया हुआ है तो
42:54मैं यहां पे लिख सकता हूं डॉलर और यहां पे
42:57अपने अ
42:59की का नाम ऑथर डॉट नेम कुछ इस तरीके से तो
43:01अब देखो जब मैं इसको कंपाइल करूंगा और
43:03मेरा जो जार फाइल क्रिएट होगी उसका नाम
43:05होगा 1.0 स्नैपशॉट - a ऑथर डॉट नेम तो
43:09इसको करने के लिए एक बार जाते हैं मेवन पे
43:10और हम करते हैं दोबारा से पैकेज तो देखो
43:13मेरा दोबारा एक पैकेज बनेगा और जैसे ही
43:15मेरा देखो पैकेज बना उसका नाम क्या है मेन
43:17-10 स्नैपशॉट माइनस आदित्य ये एक
43:20एक्स्ट्रा यहां पे लग गया। इसको हम कट कर
43:22सकते हैं और लेट्स से दोबारा अपना पैकेज
43:24बिल्ड करते हैं। ठीक है? देखो आदित्य। ठीक
43:28है? तो ये होता है आपका की वैल्यू पेयर्स।
43:30आप इसको यूज़ कर सकते हो। कोई की यहां पे
43:32सेटअप कर दो और पूरे फॉर्म में उसकी कोई
43:34वैल्यू फच करनी हो तो आप कर सकते हो
43:35मल्टीपल जगहों पे। ठीक है? अभी के लिए
43:37इसको मैं हटा देता हूं। और ये सब भी जो
43:39मैंने खुद से जनरेट किया है इसको भी हटा
43:40देते हैं। तो ये है आपकी प्रॉपर्टीज। अब
43:43यहां पे आपका फॉर्म खत्म हो गया। ठीक है?
43:46इसके अलावा आप यहां पे और भी बहुत सारे
43:48टैग्स लगा सकते हो। यहां ये आपके लग आपको
43:50लगे मिल जाएंगे। जब आप अलग-अलग
43:52प्रोजेक्ट्स के टेंपलेट डाउनलोड करोगे। अब
43:54जैसे एक बहुत ही फेमस टैब है। फेमस टैग है
43:57पैकेजिंग। तो आप यहां पे दो चीजें लिख
44:00सकते हो। या तो जार या तो वार तो इसकी जगह
44:03आप वार वेब आरकाइव भी लिख सकते हो। पर
44:05हमें पता है क्योंकि हम चाहते हैं हमारा
44:06एक जार फाइल बने। तो हम यहां पे जार लिखते
44:08हैं। इनफैक्ट अगर आप ये नहीं भी लिखोगे तो
44:10भी ये बाय डिफ़ॉल्ट जार ही होता है। ठीक
44:11है? ये मैंने आपको बस बता दिया कि ये भी
44:13एक टैग एक्सिस्ट करता है। ओके। अब ना एक
44:16और इंटरेस्टिंग टैग के बारे में सोचते
44:17हैं। मैंने कहा था ना हमारा फोर्थ पॉइंट अ
Downloading dependencies through Maven
44:20कहां गया यहां पे? हां डिपेंडेंसी
44:23डाउनलोड। अगर आपको कोई एक्सटर्नल
44:26डिपेंडेंसीज यूज़ करनी है अपने प्रोजेक्ट
44:27में तो एक तरीका तो था आप उसे मैनुअली
44:29डाउनलोड करो। राइट? जो मैंने कहा था बहुत
44:31ही बेकार तरीका है। दूसरा और बहुत ही
44:33बेहतरीन तरीका था आप उसको डाउनलोड करो
44:35मेवन के थ्रू। कैसे? अब यहां पे एक बहुत
44:37ही इंटरेस्टिंग टैग आता है जिसका नाम है
44:39डिपेंडेंसीज। ठीक है? ठीक है? डिपेंडेंसीज
44:42और इसके अंदर आप वो सारी डिपेंडेंसी या
44:44सारी एक्सटर्नल जार फाइल्स रख सकते हो जो
44:46भी आपको अपने प्रोजेक्ट के लिए चाहिए। आप
44:48उन्हें कैसे रखोगे? अगेन एक-एक करके आप
44:50डिपेंडेंसी यहां पे देते जाओगे और हर
44:52डिपेंडेंसी का देखो एक ग्रुप आईडी होगी और
44:54एक आर्टिफेक्ट आईडी होगी। ठीक है? यानी कि
44:56हर जार फाइल की भी खुद की एक ग्रुप आईडी
44:58और आर्टिफेक्ट आईडी होती है। जैसे आपकी
45:00जार फाइल की होगी। राइट? इंटरनेट से भी तो
45:02आप एक जार ही डाउनलोड करोगे। इसके अलावा
45:03यहां पे इसका वर्जन भी होगा जो कि इसने
45:05खुद से जनरेट नहीं किया। अ वर्जन कुछ इस
45:08तरीके से है ना? अब यहां पे अगर मुझे कोई
45:10डिपेंडेंसी डालनी है, लेट से मेरे को अपने
45:12कोड को मेरे को अपनी एप्लीकेशन को माय
45:14सीक्वल से कनेक्ट करना है। तो मुझे एक माय
45:15सीक्वल कनेक्टर चाहिए होगा। पर मुझे नहीं
45:17पता ना उसका एग्जैक्ट ग्रुप आईडी क्या
45:18होगी? आर्टिफेक्ट आईडी क्या होगी। है ना?
45:20अगर मुझे पता होता मैं सीधा यहां पे डाल
45:22देता। पर मुझे उसका नाम कैसे पता लगेगा?
45:23मुझे बस इसको उसका नाम देना है। एक बार
45:25मैंने मेवन को नाम बता दिया तो मेवन उसको
45:27अपने आप डाउनलोड कर लेगा। मुझे वो सब करने
45:30की जरूरत नहीं है। तो सबसे पहले तो मुझे
45:31उसका नाम नहीं पता। तो मैं क्या करूं?
45:32क्या मुझे वो सारे नाम याद करने की जरूरत
45:34है? आंसर है बिल्कुल नहीं। सबसे पहले तो
45:36मैं हटाता हूं ये डिपेंडेंसी का टैग। ठीक
45:37है? अभी अपने डिपेंडेंसीज को खाली छोड़
45:39देते हैं और चलते हैं एक बहुत ही
45:41इंटरेस्टिंग वेबसाइट पे जिसका नाम है मेव
45:44एंड रिपोजिटरी। तो देखो आपका यूआरएल होगा
45:46एमवी एंड रपोज़िटरी.com ठीक है? ये वाला
45:48थोड़ा सा मैंने ज़ूम किया हुआ है पेज को। अब
45:50यहां पे ना आप कोई भी डिपेंडेंसी को सर्च
45:52कर सकते हो। तो फॉर एग्जांपल जैसे मैंने
45:54कहा मेरे को अपने jवा को मेरे को अपने
45:56जावा के कोड को अपने डेटाबेस से कनेक्ट
45:58करना है। और कौन से डेटाबेस से? My सीक्वल
46:00से। तो मुझे चाहिए होगा एक माय सीक्वल
46:02कनेक्टर। तो मैं यहां पर लिख सकता हूं
46:03लेट्स से माय सीक्वल कनेक्टर।
46:08तो देखो मेरे पास सबसे पहला लिंक आ गया
46:10माय सीक्वल करैक्टर जे ठीक है इसी इसी की
46:12मेरे को जरूरत है। मैं इसको ओपन करता हूं।
46:13तो देखो जैसे ही मैं स्क्रॉल डाउन करूंगा
46:15ना मुझे बहुत सारे इसके वर्जनंस मिलेंगे।
46:17है ना? मैं चाहूं तो कोई भी वर्जन यूज़ कर
46:20सकता हूं। पर इंटरेस्टिंगली मुझे कौन सा
46:21वर्जन यूज़ करना चाहिए? आंसर है बिल्कुल
46:23लेटेस्ट तो बिल्कुल नहीं। राइट? क्योंकि
46:25उसमें बग्स होने के सबसे ज्यादा चांसेस
46:26होते हैं। वो भी हो सकता है बहुत अच्छा
46:28टेस्ट ना हो और बहुत ही कम लोग उसे यूज़ कर
46:30रहे हैं। अब उससे मैं उसका थोड़ा पीछे का
46:32वर्जन ले सकता हूं। 168 लोग इसे यूज़ कर
46:34रहे हैं। उसके थोड़ा और पीछे का 193 लोग
46:36इसे यूज़ कर रहे हैं। है ना? और जितना मैं
46:38पीछे जाऊंगा उतने ज्यादा लोग उसे यूज़ कर
46:40रहे होंगे। है ना? ये तो ऑब्वियस है। पर
46:41मैं बहुत पीछे भी नहीं जाना चाहता है ना?
46:43ताकि वर्जन मिसमैच ना हो जाए। मैं चाहता
46:44हूं मेरी सारी चीजें लेटेस्ट रहे। तो मैं
46:46सबसे बेस्ट एक काम करता हूं। मैं ये वाला
46:48यूज़ कर लेता हूं थर्ड बेस्ट है ना? 9.5.0
46:51तो मैं क्लिक करूंगा इस वर्जन के ऊपर। और
46:53मैं आ गया इस पेज पे। अब मैं स्क्रॉल डाउन
46:55करूंगा। तो देखो मुझे बहुत सारे तरीकों से
46:57डिपेंडेंसी मिल जाएगी। या तो मेवन वाली,
46:58ग्रेड, एसबीटी, मिल, आईवीवाई, ग्रेप
47:01वगैरह-वगैरह। पर मुझे तो मेरी मेवन
47:03डिपेंडेंसी चाहिए। तो देखो जैसे ही मैं
47:04इसे टैप करूंगा मेरा कॉपी हो जाएगा
47:05क्लिपबोर्ड पे और मैं इसके अंदर आकर के कर
47:08सकता हूं यहां पे इसे पेस्ट। ठीक है? ये
47:10तो कमेंट लाइन है। इसे आप हटा सकते हो। तो
47:12देखो इसने एक डिपेंडेंसी पेस्ट कर दी
47:13जिसकी ग्रुप आईडी का नाम है commyes। ठीक
47:16है? ये अगेन यूनिक होना चाहिए। तो ये माय
47:18एसक्यूएल ने बनाया है। इसका कनेक्टर तो
47:20इसका नाम है कॉमyक्यूएल। आर्टिफेक्टरी आई
47:22आर्टिफेक्ट आईडी का नाम है माय सीक्वल
47:24कनेक्टर j। ठीक है? ये उसके प्रोजेक्ट का
47:26नाम हो गया। इसका वर्जन है 9.5.0 जो मैंने
47:29डाउनलोड किया। अब ये स्कोप क्या है? देखो
47:31स्कोप ये ऑप्शनल है। इनफैक्ट पहले के
47:33वर्जनंस में आपको स्कोप मिलेगा भी नहीं।
47:34सिर्फ तीन चीज मिलेगी। ग्रुप, आर्टिफेक्ट
47:36और वर्जन। स्कोप बस आपको ये बताता है कि
47:38ये जो डिपेंडेंसी है ये आपको अपने कोड के
47:41किस फज़ में जरूरत पड़ेगी। तो बाय डिफॉल्ट
47:43स्कोप हमेशा कंपाइल होता है। ठीक है? तो
47:45आपको ये जो डिपेंडेंसी है कंपाइल टाइम पे
47:47चाहिए होगी। कभी कबभार इसका स्कोप चेंज हो
47:49सकता है। कभी कबभार हो सकता है टेस्ट हो।
47:50तो आपको ये डिपेंडेंसी टेस्ट फज़ में
47:52चाहिए। अगेन जो अगेन जब हम फज़ देखेंगे मेव
47:54इन के ये सब जो फज़ है तब आपको ये ज्यादा
47:56बेटर समझ आएगा। और ये ऑप्शनल फील्ड है। पर
47:58सबसेेंट फील्ड है हमारी ग्रुप आईडी,
48:00आर्टिफ आईडी और वर्जन। ठीक है? तो यहां पे
48:02इसके जो नाम है सारे वो मैंने यहां पे मेम
48:04एंड रिपॉजिटरी से उठा लिए। मुझे खुद से ये
48:05सब पता होने की जरूरत नहीं है। पर क्या
48:07मैंने यहां पे लिखते ही मेरी डिपेंडेंसी
48:09डाउनलोड हो गई? आंसर है नहीं। अभी आप
48:11देखोगे मेरी एक्सटर्नल लाइब्रेरीज के अंदर
48:12जाके तो यहां पे सिर्फ मेरी ओपन जेडीके की
48:15डिपेंडेंसी है। राइट? एक ही डिपेंडेंसी है
48:17मेरे जावा कोड की और कोई डिपेंडेंसी नहीं
48:19है। तो ऐसे तो डिपेंडेंसी डाउनलोड नहीं
48:21हुई। ठीक है? पर देखो या तो मुझे मैनुअली
48:23उसे डाउनलोड करना पड़ता या फिर मैंने बस
48:25इस टैब के अंदर उसका नाम बता दिया और अब
48:28बस मुझे मेवन को बोलना है कि तू इसे
48:29डाउनलोड कर ले। अब वो मैं इसे कैसे
48:31बोलूंगा? तो आप यहां पे एक आइकॉन देख रहे
48:32हो एम का और ये रीलोड आइकॉन आपको बस इस पे
48:35क्लिक करना है। ठीक है? अगर आपको ये आइकॉन
48:37शो नहीं हो रहा। आप यहां पे मेवन पे जाओ।
48:39आपको यहां पे वो आइकॉन शो हो रहा होगा।
48:41ठीक है? आप इसको भी क्लिक कर सकते हो।
48:42अगेन सेम काम होगा। तो अभी मैं इसको क्लिक
48:44करता हूं। तो देखो मैं क्या होगा? मेरी
48:46सारी डिपेंडेंसीज डाउनलोड होगी इंटरनेट से
48:48और वो मेरी डिपेंडेंसी आ जाएंगी एक्सटर्नल
48:51लाइब्रेरीज़ के अंदर। ठीक है? अब यहां पे
48:53ये काम ना मेरा बहुत फास्ट हो गया और हो
48:55सकता है जब आप पहली बार करो तो बहुत स्लो
48:56हो। क्यों? क्योंकि ये डिपेंडेंसीज मैंने
48:59पहले भी डाउनलोड करी होंगी और मेरे लोकल
49:01सिस्टम पे वो कैश हो रखी होंगी। अब वो
49:03कहां कैश होती है वो भी आपको बताऊंगा मैं
49:05एग्जैक्टली। पर अभी के लिए आप मान लो जब
49:06आप पहली बार इसे करोगे ना तो वो थोड़ा सा
49:08स्लो होगा। जैसे ही देखो आप मेरी
49:09एक्सटर्नल लाइब्रेरीज के अंदर मेरे दो
49:11डिपेंडेंसी डाउनलोड हो गई। My सीक्वल
49:13कनेक्टर और एक Google प्रोटो बफ की भी। पर
49:15मुझे तो सिर्फ माय सीकल कनेक्टर चाहिए था।
49:17ये कहां से आया? ठीक है? अब ये यहां से
49:19अच्छे से समझ नहीं आ रहा। यहां पे समझने
49:21के लिए ना हम इस मेवन के अंदर जाते हैं।
49:22और देखो यहां पे एक नया टैग बन गया होगा
49:24डिपेंडेंसीज का। अब इसको लाइफ साइकिल को
49:26इसको बंद कर दो। आप खोलो डिपेंडेंसीज का
49:28टैग। और देखो यहां पे मेरे पास एक ही
49:30डिपेंडेंसी है माय सीक्वल कनेक्टर। पर अगर
49:32मैं इसको ओपन करूंगा तो इसके अंदर एक और
49:35डिपेंडेंसी है Google प्रोटोब। इसका मतलब
49:37ये है कि ये एक ट्रांजिटिव डिपेंडेंसी है।
49:39मुझे चाहिए माय सीक्वल कनेक्टर। पर Mys
49:41सीक्वल कनेक्टर को रन होने के लिए Google
49:43प्रोटोब नाम की कोई डिपेंडेंसी चाहिए। ठीक
49:46है? तो अब आप सोचो अगर मैं इसको मैनुअली
49:48डाउनलोड करता तो मुझे Myscl कनेक्टर भी
49:50करना पड़ता। Google प्रोटोब भी करना
49:51पड़ता। इससे बेटर मैंने क्या किया? मैंने
49:53बस मेवन को बोला मुझे माय सीक्वल कनेक्टर
49:56की डिपेंडेंसी डाउनलोड करनी है। उसने क्या
49:58किया? वो भी डाउनलोड करी। और अगर माय
50:00सीक्वल को कोई और डिपेंडेंसी चाहिए तो वो
50:01भी डिपेंडेंसी डाउनलोड कर दी। तो यहां पे
50:03देखो प्रॉपर हायरार्की दिखती है कि मुझे
50:05ये चाहिए था। उसके अंदर मुझे ये अपने आप
50:07मिल गया। ठीक है? डिपेंडेंसीज के अंदर। पर
50:09अगर आप यहां पे देखोगे तो यहां पे आपको
50:10हायरार्की नहीं पता लगेगी कौन किसके अंदर
50:12आता है। पर यहां पे मेरी दो डिपेंडेंसी
50:14डाउनलोड हो गई। ठीक है? बस एक डिपेंडेंसी
50:16का टैग लगा के। राइट? तो अब मैं अपने कोड
50:18में अब माय सीक्वल कनेक्टर का मैंने
50:20ड्राइवर तो लिख दिया। अब बस मुझे क्या
50:22करना होगा? कुछ कोड लिखना होगा अपने
50:24डेटाबेस से कनेक्ट करने का। राइट? अब मान
50:26लो मुझे एक और डिपेंडेंसी की जरुरत है।
50:27मेरे को हाइबर नेट के साथ काम करना है।
50:29ठीक है? अब अभी ऑब्वियसली हमने हाइबर नेट
50:31या फिर डेटाबेस से कैसे कनेक्ट करते हैं
50:33वो सब नहीं पढ़ा। पर अभी आप इमेजिन करो वो
50:35सब बाद में पढ़ेंगे। पर सबसे पहले हमें
50:36उसकी डिपेंडेंसी तो डालनी ही पड़ेगी अपने
50:38प्रोजेक्ट के अंदर। है ना? अगर हमें उसे
50:39यूज़ करना है तो अगेन और डिपेंडेंसी का
50:41मतलब क्या होता है? उसकी जार फाइल डालना।
50:43तो मैं दोबारा अपने मेवन रिपोज़िटरी पे
50:44चलता हूं। और लेट्स से मैं लिखता हूं
50:46HBनेट। मुझे हबनेट चाहिए। और सबसे पहले
50:48मेरा लिंक आ जाएगा हबरनेट ओआरएम का हबरनेट
50:51कोर। मुझे यही चाहिए और फिर मुझे चूज़ करना
50:53पड़ेगा इसका वर्जन। अगेन मैं सबसे लेटेस्ट
50:55वर्जन नहीं जाना चाहता। ठीक है? थोड़ा सा
50:57पीछे चलते हैं। अगेन ये ऑप्शनल है। आप
50:59लेटेस्ट भी चूज़ कर सकते हो। थोड़ी बहुत
51:00वनेरेबिलिटी होती है। पर अच्छी प्रैक्टिस
51:02है। आप थोड़ा सा पहले का वर्जन लो। अगेन ये
51:04वाला ले लेते हैं मे 25 वाला ही 30 लोगों
51:06ने इसको लिया हुआ है जो कि बहुत कम है।
51:08ठीक है? ओके तो यहां पे जाते हैं 7.3.6
51:11फाइनल और हम नीचे जाते हैं। अगेन आपको मिल
51:14जाएगी मेवन की डिपेंडेंसी। इसको आपने किया
51:16कॉपी और आपने यहां पे इसको कर दिया पेस्ट।
51:18ये आपका कमेंट है। ये हमें नहीं चाहिए।
51:20ठीक है? और आप देख सकते हो। ठीक है? अब
51:22बाय डिफॉल्ट जैसे ही आपने लिखा कि आपकी
51:24डिपेंडेंसी आ गई होगी? बिल्कुल नहीं। जैसे
51:25आप पेस्ट करोगे ना ये बटन अपने आप यहां पे
51:28आ जाएगा कि भाई डिपेंडेंसी को सिंक कर लो।
51:30अभी आप देखो मेरे पास यहां पे दो ही
51:31डिपेंडेंसी है। एक माय सीक्वल एक Google
51:33प्रोटोकफ जो कि माय सीक्वल यूज़ करता है।
51:35जैसे ही मैं करूंगा इसे सिंक मेवन कहेगा
51:37रुको मैं इसे डाउनलोड करता हूं आपके लिए
51:39और इसने इसको डाउनलोड करना शुरू कर दिया
51:41इंटरनेट से। ठीक है? देखो एनालाइजिंग
51:42प्रोजेक्ट तो इसने इंटरनेट से डाउनलोड करा
51:44और मेरी देखो यहां पे जो रेड लाइन थी वो
51:46हट गई। यानी कि मेरी डिपेंडेंसी आ गई। और
51:48देखो मेरे पास कितनी सारी डिपेंडेंसीज
51:50यहां पे आ चुकी हैं। राइट? अगर मैं
51:52मैनुअली करता मेरे को कितना एफर्ट लगता।
51:54अब देखो मेरे पास कितनी सारी डिपेंडेंसी आ
51:55गई। कुछ जकार्ता की डिपेंडेंसी हैं। कुछ
51:57ग्लास फिश है, एक्लिप्स की है। बहुत सारी
52:00बहुत सारी डिपेंडेंसीज आ गई। राइट? तो
52:02मुझे एक बार देखना है इनकी हायरार्की क्या
52:03है? तो अगेन मैं मेवन पे जाऊंगा और यहां
52:05पे अपनी डिपेंडेंसी तो देखूंगा। तो मेरे
52:07पास दो हैं। एक तो माय सीक्वल करैक्टर और
52:08एक हाइबरनेट। यही दो चाहिए थी मेरे को।
52:10यहां पे मैंने दोनों का नाम लिखा हुआ है।
52:12माय सीक्वल के अंदर तो प्रोटोपॉफ था। पर
52:14हाइबरनेट इन सारी डिपेंडेंसीज पे फर्दर
52:16डिपेंड करता है। ये इनकी ट्रांजिटिव
52:18डिपेंडेंसीज हैं। इनफैक्ट अगर आप इनके
52:20अंदर जाओगे ना तो आपको और ट्रांजिटिव
52:22मिलेगी। देखो ये देखो अगर मैं इसको ओपन
52:24करूंगा तो इस पे डिपेंड करता है। इसको ओपन
52:25करूंगा तो इसको डिपेंड करता है। इसको ओपन
52:27करूंगा तो देखो ये फर्दर किसी और पे
52:29डिपेंड करता है। इसको ओपन करूंगा तो इसके
52:31अंदर ये सारी डिपेंडेंसीज हैं बहुत सारी।
52:33तो ये सब ट्रांजिटिव डिपेंडेंसीज हैं।
52:34मुझे इनसे मतलब नहीं है। मेरे को हबनेट
52:36चाहिए था। मुझे हबनेट मिल गया। हबनेट को
52:38जो चाहिए था वो उसको मिल गया ना। तो मेरे
52:40कोड में सारी एक्सटर्नल लाइब्रेरीज अपने
52:42आप इंस्टॉल हो गई। मुझे कुछ नहीं करना
52:44पड़ा। मुझे बस उसकी डिपेंडेंसी का नाम
52:46डालना पड़ा। तो देखो हमारा कितना काम आसान
52:48कर रहा है। मेन हमें कुछ भी नहीं करना पड़
52:50रहा। सिर्फ उस डिपेंडेंसी का मैं नाम
52:52डालता हूं और वो डाउनलोड कर लेता है और
52:53मुझे नाम भी याद नहीं करना पड़ता। मैं
52:55अपने मेवन रिपोजिटरी पे जाता हूं। उसका
52:57नाम सर्च करता हूं और उसका कोई भी वर्जन
52:59अच्छा सा उठाता हूं और उसको डाउनलोड कर
53:00लेता हूं। है ना? अगेन स्कोप यहां पे भी
53:02इसका कंपाइल है। वो सबका ज्यादातर कंपाइल
53:04ही रहता है कि कंपाइलेशन टाइम पे मुझे
53:06चाहिए होगा। ठीक है? तो यहां पे ऐसे मैं
53:08अपनी pm डॉट एक्सml फाइल को अच्छे से समझ
53:10चुका हूं। यहां पे डिपेंडेंसी का टैग है।
53:11राइट? अब ना अगर मैं जो मैंने लास्ट क्लास
53:14में अपनी स्प्रिंगbook की एप्लीकेशन बनाई
53:15थी उसका pm डॉट एक्सml खोलूं। ठीक है? तो
More Pom Tags
53:18वो ये रहा और अगर आपने अभी बनाई है तो भी
53:20आप खोल सकते हो। ये रहा पम। इसका पॉम डॉट
53:22एक्सml ना आपको थोड़ा सा बड़ा मिलेगा।
53:23राइट? क्योंकि ऑब्वियसली स्प्रिंग बूट ने
53:25अपनी खुद की कुछ चीजें डिपेंडेंसी यहां पे
53:27डाली होंगी। तो आप देखो अगेन ये तो
53:28प्रोजेक्ट स्ट्रक्चर है जो मैंने आपको
53:29बताया एक्सml स्कीमा। ये मॉडल वर्जन हो
53:31गया। यहां पे एक स्पेशल टैग है पेरेंट का।
53:33इसके बारे में अभी थोड़ी देर बात करते
53:34हैं। उसके अलावा अगेन आपकी ग्रुप आईडी
53:36आर्टिफेक्ट आईडी वर्जन हो गया। अब ये कुछ
53:38खाली टैग्स हैं। है ना? यहां पे कोई
53:40वैल्यूज़ नहीं है। इसको आप इग्नोर कर सकते
53:41हो। और यहां पे देखो प्रॉपर्टीज में उसने
53:43खुद से डाला हुआ है जावा वर्जन। है ना? तो
53:45आप इस जावा वर्जन को यूज़ कर सकते हो। हो
53:47उसने प्रॉपर्टी में डाल के रखा हुआ है कि
53:48कहीं आपको अगर यूज़ करना हो तो आप यहां से
53:50उसको निकाल सकते हो जावा प्रॉपर्टी फाइल
53:52से। अगेन देखो यहां पे हमारी डिपेंडेंसीज
53:55का टैग खाली नहीं है। पहले से ही हमारी दो
53:57डिपेंडेंसी उसने डाल के रखी हुई थी जब
53:59हमने स्प्रिंग इनिशलाइजर से प्रोजेक्ट को
54:01डाउनलोड किया था। एक है स्प्रिंग बूट
54:03स्टार्टर वेब एमवीसी। ये हेल्प करती है
54:05हमारे वेब एप्लीकेशनेशंस को बनाने के लिए।
54:07वेब एमवीसी को यूज़ करने के लिए और एक है
54:09स्प्रिंग बूट स्टार्टर वेब एमवीसी टेस्ट।
54:11तो बेसिकली टेस्ट केसेस के लिए। राइट? ये
54:13दोनों डिपेंडेंसी उसने हमें पहले से दी
54:15थी। तो अच्छा हुआ हमें बना बनाया टेंपलेट
54:17मिल गया है ना तो यहां पे स्प्रिंग
54:18इनिशलाइजर बहुत काम आता है क्योंकि आपको
54:20बनाया टेंपल्लेट मिल जाता है। ये पूरी
54:22डिपेंडेंसीज जो भी चाहिए वो आपको ऑलरेडी
54:24डाल के रख देता है। मेवन उसको सिंक कर
54:25देता है और एक्सटर्नल लाइब्रेरीज में आपका
54:27ये सब आ जाता है। तो बेसिकली अगर मैं इसके
54:28मेवन पे जाके देखूंगा तो देखो स्प्रिंग
54:30बूट स्टार्टर और स्प्रिंग बूट वेब एमवीसी
54:32और ये फर्दर अंदर से कुछ-कुछ डिपेंडेंसीज
54:34यूज़ करते होंगे। उसके अलावा मेरे को यहां
54:36पे दिखेगा एक बिल्ड टैग और ये एक्चुअली
54:38होता है मेरे प्लगइिंस का टैग। अब प्लगिंस
54:40को ना आप ऐसे मान सकते हो कि अभी के लिए
54:42ये जो मेरा मेवन है इसको अपनी लाइफ साइकिल
54:44को करने के लिए कंपाइल पैकेज वेरीफाई
54:46इंस्टॉल ये सब करने के लिए कुछ प्लगइिंस
54:48की जरूरत पड़ती है और वो सब प्लगिंस मैं
54:50यहां लिखता हूं। ठीक है? अगेन अभी हम आगे
54:52देखेंगे धीरे-धीरे और हम कौन सी प्लगइिंस
54:53को इंस्टॉल कर सकते हैं वगैरह-वगैरह। पर
54:55अभी वो इतना इंपॉर्टेंट नहीं है। पर यहां
54:57पे ना मुझे एक बहुत ही इंटरेस्टिंग टैग
54:58दिख रहा है जिसका नाम है पेरेंट टैग। ये
Parent POM & Super POM
55:00पेरेंट टैग क्या होता है? तो इसको समझाने
55:02के लिए ना मैं सबसे पहले अपने मेव एंड
55:04डेमो पे चलता हूं क्योंकि यहां पे कोई
55:05पेरेंट टैग नहीं है। तो सबसे पहले तो ऐसे
55:08समझो कि हमारी जो पोम डॉट एक्सML फाइल है
55:10ना वो इन्हहेरिटेंस को सपोर्ट करती है। तो
55:12सबसे पहले हमारा सबसे ऊपर होता है एक सुपर
55:14पोम। तो उसको आप बिल्कुल जावा के ऑब्जेक्ट
55:17क्लास की तरह मान सकते हो। जावा में एक
55:18ऑब्जेक्ट क्लास होती है व्हिच इज़ पेरेंट
55:19ऑफ़ ऑल क्लास। राइट? उसी तरीके से ना पोम्स
55:22में एक पेरेंट पॉम होता है जिसको हम बोलते
55:24हैं फिर सुपर पॉम। वो सबका पेरेंट है। हर
55:26पॉम अपने पेरेंट पॉम से ही इन्हहेरिट करता
55:29है। तो देखो यहां पे क्योंकि कोई पेरेंट
55:30मेंशन नहीं है कि इसका पेरेंट कौन है? तो
55:32बाय डिफॉल्ट इसका पेरेंट कौन हो गया?
55:34पेरेंट पॉम यानी कि सुपर पॉम। तो बिल्कुल
55:36सेम अगर आप जावा में कोई क्लास बनाते हो
55:37और आप कोई और क्लास इन्हहेरिट नहीं करते
55:39तो बाय डिफॉल्ट आप ऑब्जेक्ट क्लास को
55:41इन्हहेरिट कर ही रहे होते हो। राइट? तो
55:43बिल्कुल सेम कांसेप्ट है। अब यहां पे
55:45इन्हहेरिटेंस का कांसेप्ट क्यों है? देखो
55:47हमारा ना पोम यहां पे बहुत सिंपल दिख रहा
55:49है हमें हमें। है ना? लेकिन पोम में ना और
55:51भी बहुत सारी कॉन्फ़िगरेशंस की जरूरत होती
55:52है जो यहां पे हमें नहीं दिख रही। वह सब
55:54कॉन्फ़िगरेशंस आपके सुपर पॉम ने कर रखी
55:57होती हैं और अपने अंदर डाल रखी होती है और
55:59हमारा यह जो पोम है उनसे वह कॉन्फ़िगरेशंस
56:01को यूज़ कर सकता है। राइट? अगर वो सारी
56:03कॉन्फ़िगरेशन यहीं डाल देगा, तो हमारा पोम
56:05बहुत हैवी हो जाएगा। है ना? आप चाहो तो
56:08अपने इंटेलिजेंट के अंदर उस सुपर पॉम को
56:10देख सकते हो। कैसे? बहुत इजी तरीका है। आप
56:12अपने फॉर्म पे क्लिक करो। सबसे नीचे जाओ
56:14मेवन और यहां पे आपको दिखेगा शो इफेक्टिव
56:17पॉम। ठीक है? मुझे इस पे क्लिक करना है।
56:19तो देखो यहां पे इस फाइल का नाम है मेवन
56:20डेमो इफेक्टिव फॉर्म डॉट एक्सML। ये भी एक
56:22पोम फाइल है। पर ये डायरेक्टली मेरी पोम
56:24फाइल नहीं है। ये मेरे पोम की पेरेंट है।
56:26ये सुपर पोम है। ठीक है? तो देखो यहां पे
56:28कितनी सारी चीजें हैं। तो ये बेसिकली
56:30पेरेंट फाइल है मेरे उसकी मॉडल वर्जन
56:32ग्रुप आईडी ये सब तो सेम है जो मैंने यहां
56:34पे डिस्क्राइब किया था वो बिल्कुल सेम
56:35रहेगा। तो जो प्रॉपर्टीज बेसिकली यहां है
56:37वो यहां तो होंगी होंगी। बस कुछ स्पेशल
56:39प्रॉपर्टीज भी यहां पे होंगी। तो मॉडल
56:41वर्जन सेम है। है ना? और हमारा ये सब
56:43ग्रुप आईडी वगैरह सेम है। देखो यहां
56:45प्रॉपर्टीज भी सेम है क्योंकि वो यहां पे
56:46भी थी। ठीक है? ये रही प्रॉपर्टीज। ठीक
56:49है? अलग क्या है? देखो ये डिपेंडेंसी भी
56:51सेम है। माय सीक्वल और हबनेट हमने डाला था
56:53तो उसने अपने पेरेंट फॉर्म के अंदर भी वो
56:54डाल दिया। माय सीक्वल हबरनेट। ओके? उसके
56:56बाद यहां पे देखो एक टैग आता है
56:58रिपॉजिटरीज का जो यहां पे आपको नहीं
56:59मिलेगा। क्या आपको वो दिख रहा है? बिल्कुल
57:01नहीं दिख रहा। ठीक है? ये टैग क्या है?
57:02अभी बताता हूं आपको थोड़ी देर में। इसके
57:04अलावा और भी बहुत सारी चीजें आएंगी।
57:06प्लगइन रिपॉजिटरीज, कुछ बिल्ड सिस्टम्स,
57:08कुछ रिसोर्सेज, टेस्ट रिसोर्सेज, प्लगइन
57:10मैनेजमेंट्स वगैरह-वगैरह। ये अंदर से देखो
57:12बहुत सारी चीजें यूज़ कर रहा होता है।
57:14जिसकी हमें डायरेक्टली जरूरत नहीं पड़ती।
57:16इसलिए हम अपना फॉर्म सिंपल रखते हैं। देखो
57:18बिल्कुल सिंपल हमें यहां पे हम भाई बस तो
57:20हम बस यहां पे वही लिखते हैं जिसकी
57:22डायरेक्टली हमें जरूरत पड़ती है। इनफैक्ट
57:24बाकी चीजें हम सीधा पेरेंट फॉर्म से उठा
57:26लेते हैं। अगर हमें इनमें कुछ चेंज करना
57:28है जैसे मान लो यहां पे एक टैग था
57:30रिपोजिटरीज का रिपोजिटरीज का ये रहा। ठीक
57:33है? अगर बाय डिफॉल्ट मुझे इस टैग को चेंज
57:36करना है तो मैं रिपॉजिटरीज के टैग को यहां
57:38बना सकता हूं। जैसे मैंने डिपेंडेंसीज के
57:40ऊपर बनाता हूं। लेट्स से यहां रेपोजिटरीज़।
57:43ठीक है? कुछ इस तरीके से। तो यहां पे मैं
57:45उस टैग को ओवराइड कर सकता हूं। तब मेरा ये
57:47वाला रिपोजिटरीज का टैग यूज़ होगा ना कि ये
57:49वाला। अब मैं वो क्यों करना चाहूंगा? उसके
57:51कुछ रीज़ंस हो सकते हैं। अगेन रिपॉजिटरीज
57:53टैग क्या होती है वो आपको समझना पड़ेगा। वो
57:54हम थोड़ी देर में देखेंगे। पर हो सकता है
57:56मैं बदलना चाहता हूं कि मेरा रिपोज़िटरीज
57:58कहां से फैच हो रही है। तो अगर आपको शॉर्ट
57:59में बता दूं तो रिपॉजिटरी टैग बताता है कि
58:01ये जो मैं अपनी डाउनलोड कर रहा हूं कॉम.
58:03सीक्वल हबरनेट ये मेरा मेवन कहां से
58:06डाउनलोड करना है। मैंने कह दिया इंटरनेट
58:07से डाउनलोड हो रहा है। पर कहां से? तो अगर
58:08आप देखोगे ना रिपोजिटरी टैग में आपका नाम
58:11लिखा होगा सेंट्रल रिपॉजिटरी और उसका
58:13यूआरएल लिखा होगा। तो बेसिकली मेवन इस
58:15यूआरएल पे जाता है जिसका नाम है मेवन की
58:17सेंट्रल रिपोजिटरी। एक ये बहुत बड़ी
58:19रिपोजिटरी या बहुत बड़ा पैकेज बना होता है
58:21जहां से मेवन सारी चीजें डाउनलोड करता है।
58:22तो क्योंकि वो वहां से सब कुछ डाउनलोड कर
58:24लेता है। तो क्योंकि वो वहां से सब कुछ
58:27डाउनलोड करता है तो मेरे को वो सारा
58:28रिजल्ट अपने एक्सटर्नल लाइब्रेरीज के अंदर
58:29दिख जाता है। पर आप मान लो ऐसा हो सकता
58:32है। मैं नहीं चाहता कि मैं सेंट्रल
58:33लाइब्रेरी से सब कुछ डाउनलोड करूं या मेवन
58:35की सेंट्रल रिपोजिटरी से। मैंने अपनी खुद
58:37की कंपनी के अंदर अपनी खुद की एक
58:38रिपोजिटरी बना रखी है। वहां से मैं
58:40डाउनलोड करना चाहता हूं। वहां पे मैं जार
58:41फाइल्स रखता हूं। तो मैं वो भी कर सकता
58:43हूं। ठीक है? वो थोड़ी देर में देखेंगे हम
58:44कैसे करते हैं। पर आई होप आपको समझ आ गया
58:47होगा इफेक्टिव फॉर्म का कांसेप्ट। अब आप
58:49देखो क्योंकि इसका कोई पेरेंट नहीं था।
58:51इसलिए इसका पेरेंट सीधा इफेक्टिव फॉर्म
58:52था। पर हमारा जो डेमो प्रोजेक्ट था जो
58:55हमने अपना स्प्रिंग बूट का प्रोजेक्ट
58:57बनाया था उसमें अपने आप एक पेरेंट टैग लगा
58:59हुआ है। यहां पे ना इसका मतलब खुद का
59:01पेरेंट है इसके पास। तो इसका एक पेरेंट
59:03होगा। हो सकता है उसका भी कोई पेरेंट हो।
59:05पर ऐसे करते-करते लास्ट में आपको सुपर पॉम
59:07ही मिलेगा। राइट? अब यहां पे ना कई बार दो
59:10चीजों में कंफ्यूज कर देते हैं लोगों को।
59:12एक तो है सुपरप और एक है इफेक्टिव पॉम।
59:16ठीक है? इफेक्टिव पॉम। अब ना मैंने यहां
59:18पे इसको एक साथ यूज़ किया। पर आप अगर
59:20बिल्कुल अंदर जाओगे तो याद रखना सुपर पॉम
59:22का जनरली मतलब होता है पेरेंट ऑफ ऑल पोम।
59:25ठीक है? ये सबका पेरेंट होगा ही होगा। और
59:27इफेक्टिव पॉम का जनरली मतलब होता है जो
59:29आपका मेवन फाइनली यूज़ करेगा। ठीक है? तो
59:32मेवन फाइनली यूज दिस।
59:35ठीक है? यूज करेगा मतलब जब आपके प्रोजेक्ट
59:37को बिल्ड करने के लिए या कोई भी काम करने
59:38के लिए जो मेवन पोम यूज करेगा वो आपका
59:40इफेक्टिव पॉम होगा और हो सकता है आपका
59:42इफेक्टिव फॉर्म के अंदर आपका जो खुद का
59:44फॉर्म है वो भी और आपके सुपर पॉम में जो
59:46भी लिखा है वो सारी चीजें भी एक साथ उठा
59:48के डाल दें। तो कहीं ना कहीं वो भी आपका
59:49सुपर पॉम ही बन जाएगा। ठीक है? तो आप इन
59:51दोनों को एक साथ यूज़ कर सकते हो। ऊपर अगर
59:53आप बिल्कुल डेप्थ में जाना चाहते हो तो
59:54सुपर पॉम पेरेंट है ऑल पम का इफेक्टिव पॉम
59:57मेवन जो फाइनली यूज़ करता है तो इसमें आपका
59:59खुद का पॉम प्लस सुपर पॉम की सारी चीजें
1:00:01अगर आप सुपर पॉम से सब कुछ करते हो वो सब
1:00:04मिलाकर के इफेक्टिव पॉम के अंदर आ जाता है
1:00:06पर अगेन इतना फर्क नहीं पड़ता इन चीजों से
1:00:08तो यहां पे मैं बता रहा था कि इसका खुद का
1:00:10एक पेरेंट है जिसका नाम है ऑर्क डॉट
1:00:12स्प्रेम फ्रेमवर्क डॉटboot तो अगर मैं
1:00:13कंट्रोल या कमांड दबाऊंगा और मैं इस पे
1:00:15क्लिक करूंगा तो मैं इसके अंदर जा सकता
1:00:16हूं तो देखो ये रहा मेरा ये वाला पेरेंट
1:00:18अब देखो इसके पास भी अपना खुद का पेरेंट
1:00:20है तो इसके अगर मैं अंदर जाऊं तो देखो ये
1:00:22इसके पास पास कोई पेरेंट नहीं है। यानी कि
1:00:24इसका पेरेंट कौन हो गया? हमारा सुपर पॉम।
1:00:26ठीक है? तो सुपर पॉम के अंदर कुछ स्प्रिंग
1:00:28बूट डिपेंडेंसीज नाम का पोम हुआ। उसके
1:00:31अंदर स्प्रिंग बूट स्टार्टर पेरेंट नाम का
1:00:32पोम हुआ और फाइनली हुआ हमारा पॉम जिसने
1:00:35स्प्रिंग बूट स्टार्टर पेरेंट को भी
1:00:37इन्हहेरिट किया हुआ है। राइट? तो ये सब
1:00:39इनकी हायरार्की होती है। इतनी बड़ी
1:00:41हायरार्की क्यों रही होगी? अब हो सकता है
1:00:42हमारे पोम ने कुछ चीज डिक्लेअर की। कुछ
1:00:44चीजें इसने डिक्लेअर की। राइट? कुछ चीजें
1:00:46इसके पेरेंट ने डिक्लेअर की एंड एंड कुछ
1:00:48चीजें हमारे पेरेंट फॉर्म के अंदर आती है।
1:00:49ये बिल्कुल सेम है जैसे आप जावा में
1:00:51इनहेरिटेंस को यूज़ करते हो। हो राइट? आप
1:00:52मल्टीलेवल इन्हहेरिटेंस क्यों बनाते हो?
1:00:54एक ही रीज़न होता है कि किसी स्टेज पे आपको
1:00:56अपने पेरेंट की कुछ चीजों को ओवराइट करना
1:00:58होता है। राइट? तो इसलिए आप मल्टीलेवल
1:00:59इनहेरिटेंस तक जाते हो। तो सेम चीज यहां
1:01:01पे है। ठीक है? तो ओके भैया ये तो हमें
1:01:03समझ आ गया। अब एक इंटरेस्टिंग चीज मैंने
Central & Local Repository
1:01:06आपको बताया कि मेवन ये सब डिपेंडेंसीज़
1:01:08कहां से डाउनलोड कर रहा है? तो मैंने आपको
1:01:09बताया था अगर हम अपने इफेक्टिव फॉर्म में
1:01:10जाएं। मैं वापस से मेवन डेमो पे चलता हूं।
1:01:12ठीक है? जो हमारा खाली मेवन प्रोजेक्ट था
1:01:14उस पे मैं जाऊंगा मेवन के अंदर और मैं
1:01:16करूंगा शो इफेक्टिव फॉर्म। हां। तो यहां
1:01:19पे एक रिसोर्सेज का रिपॉज़िटरीज का टैग
1:01:21हुआ। होगा सॉरी उसके अंदर एक रिपॉजिटरी
1:01:23लिखी होगी कि मेरी कहां से ये सारी चीजें
1:01:26डाउनलोड हो रही हैं। तो अभी बाय डिफ़ॉल्ट
1:01:27वो सेंट्रल रिपोज़िटरी से डाउनलोड हो रही
1:01:29हैं। और ये रहा उसका यूआरएल। ठीक है? तो
1:01:31मैं बोल सकता हूं एक सेंट्रल रिपोज़िटरी
1:01:33बना रखी है मेवन ने जिसमें थाउजेंड्स एंड
1:01:35थाउजेंड्स ऑफ़ जार फाइल्स पड़ी होंगी और हम
1:01:37वहां से कोई भी जार फाइल जो हमें चाहिए वो
1:01:38डाउनलोड कर सकते हैं। हमें बस उसका नाम,
1:01:40आर्टिफैक्ट आईडी, ग्रुप आईडी और वर्जन ये
1:01:42सब बताना होता है। उसके हिसाब से वो उनको
1:01:43डाउनलोड कर लेता है। बहुत बढ़िया। पर ना
1:01:45मेवन दो तरह की रिपोज़िटरीज यूज़ करता है।
1:01:48अगर मैं आपको बताऊं तो उसको हम यहां लिखते
1:01:50हैं। मेवन
1:01:52यूज टू रेपोजिटरीज। कौन-कौन सी? देखो एक
1:01:56तो है ऑब्वियसली हमारी मेवन सेंट्रल जो
1:01:58अभी हमने देखी मेवन सेंट्रल और दूसरी है
1:02:00हमारी लोकल रिपोजिटरी। अब ये लोकल
1:02:02रिपोजिटरी कौन सी है? अब देखो ये बहुत
1:02:04इंटरेस्टिंग है। मेवन क्या करता है? आपके
1:02:07कंप्यूटर के अंदर एक फोल्डर बनाता है M2
1:02:10के नाम से। ये एक हिडन फोल्डर होता है।
1:02:12आपका ये मैक में रूट लेवल पे एक्सिस्ट
1:02:14करेगा। और अगर आप Windows में जाओगे तो
1:02:15शायद यूज़र्स के अंदर आपका जो भी यूजर बना
1:02:18हुआ है उसके अंदर जाके एक्सिस्ट करेगा। आप
1:02:20सर्च कर सकते हो। ठीक है? अगर आप इस M2
1:02:22फोल्डर के अंदर जाओगे ना उसके अंदर ये एक
1:02:24फोल्डर बनाता है जिसका नाम होता है
1:02:26रेपोजिटरीज। ठीक है? और उसके अंदर वो सारी
1:02:28रेपोजिटरी स्टोर करता रहता है जो भी आप
1:02:30इंटरनेट से डाउनलोड करते हो। तो कहने का
1:02:32मतलब ये कि जब भी जैसे मैंने यहां पे लिखा
1:02:34माय सीक्वल कनेक्टर और या फिर मैंने यहां
1:02:35पे लिखा हबरनेट सबसे पहले चेक करेगा कि
1:02:38क्या मेरे लोकल सिस्टम के अंदर ये
1:02:40डिपेंडेंसी मौजूद है। अगर
1:02:41[गला साफ़ करने की आवाज़] ये लोकल के अंदर
1:02:42मौजूद है तो वो वहां से फैच कर लेगा। और
1:02:44लोकल में कहां से? मैंने कहा था ना ये जो
1:02:47m2 फोल्डर के अंदर रिपोजिटरीज का फोल्डर
1:02:49है उसके अंदर जाकर के देखता है कि क्या
1:02:50मेरे पास पहले से ही डिपेंडेंसी मौजूद है।
1:02:53अगर है तो वहीं से यूज़ कर लेगा और अगर
1:02:55नहीं है तब जाकर के सेंट्रल रिपोज़िटरी से
1:02:57उसे डाउनलोड करेगा बेसिकली यहां से मेवन
1:02:59सेंट्रल से। ठीक है? पर जब वो मेन सेंट्रल
1:03:02से उसे डाउनलोड कर रहा होगा ना तो वो दो
1:03:04काम करेगा। एक तो डाउनलोड करके आपको यहां
1:03:06पे शो कर देगा एक्सटर्नल लाइब्रेरीज में
1:03:07और आपकी वो M2 फोल्डर के अंदर भी डाल
1:03:10देगा। राइट? उसे कैश करने के लिए। अब इसको
1:03:12कैश करने का फायदा क्या होता है? कि जब आप
1:03:14अपने सेकंड टाइम अपने प्रोजेक्ट को बिल्ड
1:03:16करो तो आपको वो सारी फाइल दोबारा से
1:03:18इंटरनेट से डाउनलोड ना करनी पड़े। आप सीधा
1:03:20अपने लोकल फोल्डर से वो फाइल उठा सको। या
1:03:22राइट? इसलिए मैंने आपको बताया जो हमारा
1:03:24फर्स्ट बिल्ड होगा ना वो स्लो होगा। जब तक
1:03:26आपका कुछ भी एक्सिस्ट नहीं करता होगा आपके
1:03:27लोकल के अंदर तो बिल्ड थोड़ा स्लो होगा।
1:03:29लेकिन जैसे आपकी कैश हो जाएंगी कुछ
1:03:31डिपेंडेंसीज तब आपका बिल्ड फास्ट हो
1:03:33जाएगा। अब वो एक या दो डिपेंडेंसी आपको
1:03:35पता नहीं लगेगा। अब मान लो 100 200
1:03:36डिपेंडेंसीज हैं। तब वो 100 200
1:03:38डिपेंडेंसी डाउनलोड करने के लिए इंटरनेट
1:03:39से थोड़ा सा टाइम लग सकता है। राइट? पर
1:03:40अगर आप लोकली कैश करोगे तो बिल्कुल टाइम
1:03:42नहीं लगेगा। बिल्ड बहुत फास्ट होता जाएगा।
1:03:44इसलिए मेवन इन सारी चीजों को लोकल
1:03:45रिपोज़िटरी के अंदर भी रखता है। दूसरी चीज
1:03:48आप जब खुद की जार फाइल बनाते हो तो जैसे
1:03:50मैंने बोला कि अगर मैं जाकर के एक लाइफ
1:03:53साइकिल में अपना कर दूं यहां पे पैकेज।
1:03:55ठीक है? तो मेरी खुद की एक जार फाइल बन
1:03:57जाएगी। ठीक है? जिसका नाम होगा अ ये रहा
1:04:00मेवन डेमो 1.0 Snapshot डॉट जार। ठीक है?
1:04:03तो अब मैंने आपको बताया था ना इस जार फाइल
1:04:04का नाम फोकस करना। तो देखो मेरी जार फाइल
1:04:06का नाम वही होता है जो पहली बात तो पहले
1:04:09आएगा मेवन डेमो जो मेरी आर्टिफेक्ट आईडी
1:04:11का नाम है। ठीक है? माइनस वन अह मेरे
1:04:13वर्ज़न का नाम 1.0 स्नैपशॉट डॉट जार 1.0
1:04:16snapshot डॉट जार राइट तो ये दोनों नाम
1:04:18हमेशा सेम रहेंगे हमेशा ऐसे ही होता है
1:04:20आर्टिफेक्ट आईडी माइनस वर्जन आईडी तो नाम
1:04:22हमेशा सेम होता है आर्टिफैक्ट आईडी फिर
1:04:23वर्जन आईडी ठीक है और ये मेरी जो जार फाइल
1:04:26है ये जाकर के भी वो स्टोर करता है मेरे
1:04:28लोकल M2 कैश के अंदर राइट राइट तो ये दो
1:04:31काम करता है एक तो जो भी मैं इंटरनेट से
1:04:33डाउनलोड कर रहा हूं उसको कैश करता है और
1:04:34जो मैं खुद की जार फाइल बनाता हूं अपने
1:04:36प्रोजेक्ट की वो भी मेरे M2 के अंदर स्टोर
1:04:38हो जाती है यानी कि मेरे लोकल कैश के अंदर
1:04:41अभी मैं मैं ये लोकल एक फोल्डर आपको खोल
1:04:43के दिखाता हूं। उससे पहले मैं आपने कहा था
1:04:45ना कि किसी भी जार फाइल का नाम क्या होता
1:04:47है? आर्टिफ आईडी और फिर वर्जन आईडी। तो
1:04:49अगर आप ध्यान से देखो ये रहा हमारा माय
1:04:50सीकल कनेक्टर की डिपेंडेंसी और इसका
1:04:52आर्टिफेक्ट आईडी है माय सीक्वल कनेक्टर j
1:04:54और वर्जन है 9.5.0 और सेम टाइम पे आप इसकी
1:04:58डिपेंडेंसी का नाम देखो माय सीक्वल
1:05:01कनेक्टर जे 9.5.0
1:05:03ठीक है? तो बिल्कुल सेम नाम होता है
1:05:05आर्टिफेक्ट आईडी और वर्जन आईडी। इनफैक्ट
1:05:07इसीलिए हमारी ये जो थर्ड पार्टी
1:05:09लाइब्रेरीज होती है इनको हम कभी कबभार
1:05:11आर्टिफेक्ट्स भी बोल देते हैं कि हम अपने
1:05:12आर्टिफेक्ट्स को डाउनलोड कर रहे हैं
1:05:14क्योंकि इनका नाम आर्टिफेक्ट से शुरू होता
1:05:15है तो आर्टिफेक्ट्स डाउनलोड कर रहे हैं।
1:05:17ठीक है? तो अब एक काम करते हैं। मैं आपको
1:05:18अपना लोकल M2 फोल्डर खोल के दिखाता हूं।
1:05:20हां जी। तो आप देख सकते हो ये है मेरा
1:05:22लोकल M2 फोल्डर। अब देखो क्योंकि हिडन
1:05:24फोल्डर है तो मैक के अंदर आपको पता है
1:05:25कमांड, शिफ्ट और डॉट करके आप उसको एक्सेस
1:05:27कर सकते हो। अब वैसे ही विंडो में भी जैसे
1:05:29ही आप हिडन फोल्डर को एक्सेस करते हो वैसे
1:05:30आप कर सकते हो। आप अपने M2 फोल्डर के अंदर
1:05:32जाओ और वहां पे आप देखोगे रिपॉजिटरी करके
1:05:34एक आपका डायरेक्टरी बनी होगी। राइट? तो
1:05:37यही काम आप ऑब्वियसली टर्मिनल के थ्रू भी
1:05:38कर सकते हो। अब देखो अपने टर्मिनल पे भी
1:05:40अगर आप सीडी करो अब क्योंकि रूट फोल्डर है
1:05:42तो मुझे ऐसे एक्सेस करना पड़ेगा MM2 तो मैं
1:05:45m2 फोल्डर के अंदर आ गया। एलएस करूंगा तो
1:05:46मेरे पास यहां पे रिपॉजिटरी है। ठीक है?
1:05:48तो मैं यहां पे रिपॉजिटरी फोल्डर के अंदर
1:05:50जा सकता हूं। और मुझे यहां पे मिल जाएंगे
1:05:52वो सारी फाइल्स जो मेरे जो मेरे मेवन ने
1:05:56यहां पे कैश करके रखी हुई हैं। ठीक है? अब
1:05:58अगेन ये सारी फाइल्स भी फोल्डर स्ट्रक्चर
1:06:00से अरेंज हैं। देखो कॉम डॉट उसके अंदर भी
1:06:03माय सीक्वल डॉट माय सीक्वल कनेक्टर। ठीक
1:06:05है? तो मुझे माय सीक्वल कनेक्टर मिल गया।
1:06:07तो बेसिकली ये जो मेरा माय सीक्वल कनेक्टर
1:06:09था कॉम डॉट माय सीक्वकल कनेक्टर माय
1:06:11सीक्वल कनेक्टर जे वो यहां पे पड़ा है।
1:06:12इसके अंदर Mys सीक्वल ये रहा Mys सीक्वल
1:06:15कनेक्टर जे। राइट? तो अगेन अगर मैं अपने
1:06:17प्रोजेक्ट को दोबारा बिल्ड करूंगा तो मेरा
1:06:19माय सीक्वल कनेक्टर इंटरनेट से डाउनलोड ना
1:06:20हो करके मेरे लोकल रिपॉज़िटरी से फैच हो
1:06:22जाएगा। राइट? तो ये काम होता है। इनफैक्ट
1:06:25मेरे पास एक तीसरी तरह की रिपोजिटरी भी हो
1:06:28सकती है। जैसे मैंने बोला एक मेवन सेंटर
1:06:30है, एक लोकल है। तो कभी कबभार मैं एक और
1:06:32तरह की रिपॉजिटरीज यूज़ कर सकता हूं जिसको
1:06:34मैं बोलता हूं अदर रिमोट रिपॉजिटरीज। अदर
1:06:36रिमोट। ठीक है? अब जैसे मेवन सेंट्रल भी
1:06:38एक रिमोट रिपोज़िटरी है। राइट? और वो तो
1:06:40मेवन सेंट्रल के अंडर आती है। तो उसको तो
1:06:41मैं रिमोटली यूज़ करता हूं। वैसे ही अदर
1:06:43रिमोट रिपॉज़िटरीज क्या हो सकती है? अब मान
1:06:45लो हम एक कंपनी में काम करते हैं जहां पे
1:06:47मेवन प्रोजेक्ट्स चलते हैं। लेट्स से हम
1:06:48स्प्रिंग बूट पे काम करते हैं और उस पे
1:06:50हमें बहुत सारी डिपेंडेंसी की जरूरत पड़ती
1:06:51है। तो या तो हम मेवन सेंट्रल से
1:06:53डायरेक्टली उन डिपेंडेंसी को डाउनलोड
1:06:54करें। राइट? या फिर हमारे पास एक कंपनी
1:06:56वाइट प्राइवेट रिपोजिटरी बनी हो जो रिमोट
1:06:58रिपोजिटरी हो। हम वहां से भी डाउनलोड कर
1:07:00सकते हैं। अब इसके दो रीज़ंस हैं। एक तो
1:07:02कुछ रिपोजिटरीज ना कंपनीज़ में प्राइवेट
1:07:04होती है। कुछ जार फाइल्स प्राइवेट होती
1:07:06हैं। राइट? कुछ मैंने इंटरनल लाइब्रेरीज
1:07:08बना रखी हैं अपनी कंपनीज़ के लिए। वो
1:07:09प्राइवेट लाइब्रेरीज हैं। वो मेरी
1:07:10प्राइवेट है। है ना? वो मेरे को मेवन
1:07:12सेंट्रल पे नहीं मिलेंगी। ना ही मैं उसको
1:07:13पब्लिकली कहीं डालना चाहता हूं। तो मैं
1:07:15उनको क्या करूंगा? अपनी कंपनी की रिमोट
1:07:17रिपोजिटरी पर रख दूंगा। राइट? और वहां से
1:07:19अपने जार को या अपने आर्टिफेक्ट्स को
1:07:20डाउनलोड करूंगा। राइट? और दूसरा रीजन है
1:07:22कि मेवन सेंट्रल क्योंकि एक ओपन
1:07:24रिपोजिटरीज हैं। उसमें बहुत सारी
1:07:26रिपॉजिटरीज वनरेबल हो सकती है। राइट? बहुत
1:07:28सारी रिपोजिटरीज में बग हो सकते हैं। बहुत
1:07:30सारी एरर प्रोन हो सकती है। तो मैं नहीं
1:07:32चाहता मैं उन्हें डायरेक्टली यूज़ करूं।
1:07:33कभी कबभार मेरे को सिक्योरिटी थ्रेट भी हो
1:07:35सकता है। है ना? उस केस में मैं अपनी
1:07:36कंपनी वाइड रिपॉजिटरी यूज़ करूंगा। जहां पे
1:07:38मुझे पता है सेफ स्पेस है वहां पे वही सब
1:07:41जार फाइल्स या आर्टिफेक्ट्स रखे होंगे जो
1:07:44ट्राइड एंड टेस्टेड है। राइट? तो ये भी एक
1:07:45रीज़न हो सकता है। तो अगर मान लो मुझे चेंज
1:07:48करना है कि मेरा मेवन कहां से रिपोजिटरीज
1:07:50को डाउनलोड करेगा? तो बाय डिफॉल्ट तो वो
1:07:52डाउनलोड करेगा सेंट्रल रिपोजिटरी से जो कि
1:07:54मेरे इफेक्टिव फॉर्म में डिक्लेयर्ड है।
1:07:55पर मैं इसको चेंज कर सकता हूं अपने
1:07:57रिपॉजिटरी टैग को ओवराइड करके। तो यहां पे
1:07:59मैं लिखूंगा रिपोजिटरीज और यहां पे आ
1:08:02जाएगा मेरा रिपॉजिटरी। और इसमें मुझे दो
1:08:04चीजें डिफाइन करनी है। एक तो आईडी आएगी
1:08:06आईडी और एक आ जाएगा लेट्स से यूआरएल।
1:08:09यूआरएल कुछ इस तरीके से। तो अब आईडी में
1:08:12मैं अपनी कोई भी आईडी रख सकता हूं। लेट्स
1:08:14से मेरी कंपनी की कोई रेपोज़िटरी होगी। ठीक
1:08:16है? कंपनी रेपो रख दिया मैंने अभी के लिए।
1:08:18ठीक है? और उस रिमोट रेपोज़िटरी का लेट्स
1:08:20से कोई यूआरएल होगा। अब जैसे वो हो सकता
1:08:21है https डॉट लेट्स से रेपो डॉट coderm.
1:08:28ठीक है? तो लेट्स से स्लैश मेवन। तो मान
1:08:30लो यहां पे मैंने अपनी वेवन रिपोजिटरीज
1:08:32रखी हुई हैं। तो मैं इसको ऐसे ओवराइड कर
1:08:33सकता हूं। अब जब मैं इसको रन करूंगा तो वो
1:08:35यहां से फच करने की कोशिश करेगा ना कि
1:08:36मेरी सेंट्रल से। अब क्योंकि ये एक्सिस्ट
1:08:38नहीं करता तो अगेन मुझे एरर आ जाएगा। तो
1:08:40इसको मैं हटा सकता हूं या फिर अभी के लिए
1:08:41इसको मैं कमेंट करके छोड़ देता हूं यहां
1:08:42पे। ठीक है? तो ताकि जब मैं प्रोजेक्ट
1:08:45शेयर करूं तो आपको यहां पे दिखे कि मैं
1:08:46इसको भी ओवराइड कर सकता हूं। अब देखो हमें
1:08:49समझ आ गया होगा कि हमारा कंप्लीट फ्लो
1:08:51क्या होता होगा। जब हम पोम के साथ काम
1:08:53करते हैं। ठीक है? तो हमारा कंप्लीट फ्लो
1:08:56रेपोजिटरी को डाउनलोड करने का कुछ ऐसा
1:08:58दिखता होगा कि सबसे पहले हमारा जो मेवन है
1:09:00वो रीड करेगा पोमट एक्सml फाइल कि हमें
1:09:03कौन सी कॉन्फ़िगरेशन को कौन सी कौन सी
1:09:05डिपेंडेंसी को डाउनलोड करना है। ठीक है?
1:09:07उसके बाद वो कहां चेक करेगा उस डिपेंडेंसी
1:09:08को? सबसे पहले चेक करेगा हमारे लोकल
1:09:10रिपॉजिटरी में। कि हमारे पास क्या है?
1:09:11लोकली वो एक्सिस्ट करती है। और वो कहां
1:09:13चेक करेगा? हमारे M2 फोल्डर के अंदर। ठीक
1:09:16है? इनफैक्ट M2 के M2 के अंदर भी एक
1:09:18रिपोज़िटरी फोल्डर है। उसके अंदर जाकर के
1:09:21वो चेक करेगा। अगर उसको वहां से मिल गया
1:09:23तो वो यहां से यूज़ कर लेगा। अगर वहां से
1:09:25नहीं मिला तो यहां पे लिख देता हूं चेक
1:09:27लोकल रेपोजिटरी फर्स्ट।
1:09:30तो अगर लोकली उसको वहां से मिल गया तो
1:09:32वहां से चेक करेगा। नहीं तो वो चेक करेगा
1:09:34आपकी मेवन सेंट्रल रेपो को कुछ इस तरीके
1:09:38से। ठीक है? और हो सकता है आपने इसको
1:09:40ओवराइड किया हो और आप चाहते हो मेरी कंपनी
1:09:42वाइड रेपो यूज़ हो तो यहां से आप उसको
1:09:43रिप्लेस कर सकते हो आपकी जो रिमोट
1:09:44रिपोजिटरी है उसके यूआरएल से। ठीक है?
1:09:47इनफैक्ट जब वो सेंट्रल रेपोजिटरी से
1:09:49डाउनलोड कर भी लेगा तो वो स्टोर करेगा
1:09:51डाउनलोडेड
1:09:52जार इन लोकल ये भी वो करता है राइट ताकि
1:09:56वो उसे कैश कर सके ओके इनफैक्ट अगर मैं
1:09:59आपको एक और इंटरेस्टिंग चीज दिखाऊं मैं
1:10:01अपने लोकल M2 फोल्डर में जाऊं और अपनी
1:10:02सारी रिपोज़िटरी डिलीट कर दूं तो मूव टू
1:10:06बिन देखो मैंने सारी रिपॉज़िटरी डिलीट कर
1:10:08दी। अब मेरे सारे प्रोजेक्ट्स चलने बंद हो
1:10:10जाएंगे क्योंकि वो देखो ये प्रोजेक्ट
1:10:11एनालाइज कर रहा है और ये कहेगा ये सारी
1:10:13डिपेंडेंसी तो है ही नहीं तो आप देखो
1:10:14एक्सटर्नल लाइब्रेरी के अंदर जाओगे तो
1:10:16सारी खत्म देखो मैंने यहां पे माय सीक्वल
1:10:18हबनेट डाली थी वो सब चली गई सिर्फ ओपन jडी
1:10:20के रह गया जो मेरी जावा की है। ठीक है? तो
1:10:22मुझे दोबारा इंस्टॉल करना पड़ेगा और इस
1:10:24बार ये इंटरनेट से डाउनलोड होगी और मेरे
1:10:26इस फोल्डर के अंदर जाकर के कैश हो जाएंगी।
1:10:28ठीक है? सेम तरीके से अगर मैं अपने
1:10:30स्प्रिंग बूट वाले प्रोजेक्ट में भी जाऊं
1:10:32तो यहां पे भी देखो प्रोजेक्ट मेरा खाली
1:10:33हो चुका होगा। सिर्फ ओपन जेडीके रह गया।
1:10:35बाकी ये सारी डिपेंडेंसीज मेरी हट चुकी
1:10:37हैं। ठीक है? तो एक काम करते हैं अपने
1:10:38मेमन डेमो को करते हैं जाकर के सिंक। तो
1:10:42इसको थोड़ा सा टाइम लेने दो।
1:10:46तो देखो यहां पे थोड़ा टाइम लग रहा है
1:10:47क्योंकि ये सारा इंटरनेट से डाउनलोड करने
1:10:48की कोशिश कर रहा है। डाउनलोड प्लगइंस फॉर
1:10:50मेवन डेमो। और थोड़ा सा टाइम लेगा ये।
1:10:54ओके। यहां पे थोड़ा अनरिजॉल्व डिपेंडेंसी
1:10:55का इशू आ गया। क्यों? क्योंकि हो सकता है
1:10:57कुछ डिपेंडेंसी अभी भी ये मेरे लोकल से
1:10:59फेच करने की कोशिश कर रहा हो। उसके लिए आप
1:11:01यहां पे सिंक ऑल मेवन पे मत जाओ। रीलोड ऑल
1:11:03मेवन प्रोजेक्ट पे जाओ कि स्टार्टिंग से
1:11:05रीलोड कर। मुझे सिंक नहीं करना। ठीक है?
1:11:07तो थोड़ा टाइम लेगा ये। और देखो
1:11:12और ये हो गया। इसने सारी एनालाइज़ कर ली।
1:11:14सारी डिपेंडेंसीज़ डाउनलोड कर ली। और देखो
1:11:17मैं दोबारा से एक्सटर्नल पे जाऊंगा। तो
1:11:19मेरे पास सारी डेमो सारी लाइब्रेरीज़ अपनी
1:11:21वापस आ गई। इनफैक्ट मैं उसको यहां पे भी
1:11:23चेक कर सकता हूं। My सीकल कनेक्टर
1:11:24हाइबरनेट ये देखो। ये देखो आ गई। सेम
1:11:27तरीके से मैं अपने जो ये वाली डिपेंडेंसी
1:11:29थी ये भी देखो मेरी वापस आ गई।
1:11:32ठीक है? इनफैक्ट अगर मैं वापस से अपने
1:11:34रेपोजिटरी फोल्डर में जाऊंगा तो देखो मेरे
1:11:36पास वापस से जो जो मैंने डिलीट की थी वो
1:11:38सारी वापस से बिल्ड हो गई है। ठीक है? आई
1:11:40होप आपको समझ आया होगा मेवन के सारे यूज़
1:11:42केस कितने अच्छे यूज़ केसेस हैं। इनफैक्ट
1:11:44अब हम मेवन के लास्ट टॉपिक की बात करते
1:11:46हैं जो है मेवन का लाइफ साइकिल और ये बहुत
Maven Lifecycle
1:11:49इंटरेस्टिंग टॉपिक है। सबसे पहले लाइफ
1:11:50साइकिल क्या होता है? देखो जब आप कोई जावा
1:11:52का कोड लिखते हो ना तो आपका जावा का कोड
1:11:54बहुत सारे फेसेस से होते हुए गुजरता है।
1:11:56राइट? आप अपने जावा के कोड को कंपाइल करते
1:11:58हो, उसे रन करते हो। उनके बीच में भी कई
1:12:00सारे फेसेस होते हैं जो हमें ऐसे नहीं
1:12:02दिखते। मेवन उन सारे लाइफ साइकिल को, उन
1:12:05सारे फेसेस को हैंडल करता है। तो देखो अगर
1:12:07हम इंटेलिजेंट पे जाएं, ठीक है? इसको
1:12:09क्लोज करते हैं और मैं यहां पे जाता हूं
1:12:10मेवन पे। तो मेरे पास यहां पे बहुत सारे
1:12:13टैब्स थे। ठीक है? एक टैब था मेरे पास
1:12:15लाइफ साइकिल का डिपेंडेंसी, रिपोजिटरी,
1:12:17प्लगइंस वगैरह-वगैरह। अब यहां पे मुझे
1:12:18जाना है लाइफ साइकिल पे। तो आप देखोगे
1:12:20मेरे पास कितने सारे मेवन के लाइफ साइकिल
1:12:22के फेसेस हैं। क्लीन, वैलिडेट, कंपाइल,
1:12:24टेस्ट, पैकेज, वेरीफाई, इंस्टॉल, साइट,
1:12:25डिप्लॉय। तो मेविन कहता है कि मैं आपके
1:12:28प्रोजेक्ट को ना कंप्लीटली एंड टू एंड
1:12:30हैंडल करूंगा। उसको क्लीन वैलिडेट ये सब
1:12:32करने से लेकर के डिप्लॉय करने तक। ठीक है?
1:12:34अब ये क्या होते हैं? इसको समझते हैं। तो
1:12:36सबसे पहले ना आप मानो कि लाइफ साइकिल ना
1:12:38मेवन ने तीन पार्ट्स में डिवाइड कर रखी
1:12:40है। तो इसको मैं अलग कलर से लिखता हूं। तो
1:12:42लेट्स से एक है आपकी क्लीन लाइफ साइकिल।
1:12:45ठीक है? तो ये हो गई आपकी वन। एक है आपकी
1:12:47डिफिकल्ट लाइफ साइकिल और तीसरी है आपकी
1:12:50साइड लाइफ साइकिल। ठीक है? क्लीन लाइफ
1:12:52साइकिल में एक ही फज़ है जो है क्लीन
1:12:54डिफ़ॉल्ट और आपकी साइट लाइफ साइकिल में भी
1:12:56एक ही फज़ है जो है साइट सा टाइट ठीक है ये
1:12:59बात बताता हूं क्या है सबसे इंपॉर्टेंट
1:13:01होती है आपकी डिफॉल्ट लाइफ साइकिल क्योंकि
1:13:04इसके पास है मल्टीपल फज़ अगर मैं इसके फेस
1:13:06की बात करूं तो ये सारे फज़ क्लीन को छोड़
1:13:09दो और साइट को छोड़ दो वैलिडेट कंपाइल
1:13:11टेस्ट पैकेज वेरीफाई इंस्टॉल डिप्लॉय ये
1:13:13सब इसके फज़ हैं हां जी तो देखो मैंने
1:13:15डिफ़ॉल्ट के सारे फेसेस देख लिए वैलिडेट
1:13:17कंपाइल टेस्ट पैकेज वेरीफाई इंस्टॉल
1:13:19डिप्लॉय अब इन फज़ का मतलब क्या है। इसको
1:13:21एक बार समझते हैं। पहली बात तो ये समझना
1:13:23ये जो फज़ है ना ये लाइन में होते हैं। तो
1:13:25पहले वैलिडेट होगा फिर कंपाइल, फिर टेस्ट,
1:13:26फिर पैकेज, फिर वेरीफाई, इंस्टॉल और
1:13:28डिप्लॉय। ठीक है? क्लीन और साइड हम बाद
1:13:30में देखते हैं। पहले हम डिफ़ॉल्ट लाइफ
1:13:31साइकिल को समझते हैं। और इंटरेस्टिंगली
1:13:33अगर आपने अपने एमवीएन से किया वैलिडेट तो
1:13:36आपका पूरा का पूरा कोड सिर्फ वैलिडेट
1:13:38होगा। मैं आपको बताता हूं अभी इसका मतलब
1:13:39क्या होता है। पर अगर आपने किया कंपाइल
1:13:41अगर आपने कंपाइल पे क्लिक किया तो आपका
1:13:43कोड सिर्फ वैलिडेट सिर्फ कंपाइल नहीं होगा
1:13:46बल्कि पहले वैलिडेट होगा और फिर कंपाइल
1:13:48होगा। यानी कि आप किसी भी स्टेज पे क्लिक
1:13:50करोगे ना उसके पहले के सारे स्टेजेस होते
1:13:52हुए जाएंगे। यानी कि अगर आपने किया
1:13:54डिप्लॉय बेसिकली इस पे क्लिक किया तो पहले
1:13:57वैलिडेट होगा फिर कंपाइल होगा, टेस्ट
1:13:59होगा, पैकेज बनेगा, वेरीफाई होगा, इंस्टॉल
1:14:01होगा और फिर डिप्लॉय होगा। राइट? तो इसका
1:14:03मतलब आप या तो डिप्लॉय पे क्लिक कर दो तब
1:14:05भी आपका कोड कंपाइल होते हुए गुजरेगा,
1:14:07टेस्ट भी होगा। और आप अगर कंपाइल पे क्लिक
1:14:09करो तब भी आपका कोड कंपाइल होगा। ठीक है?
1:14:11बस आपको याद रखना है कि अगर आप कोई भी फेज
1:14:13पे क्लिक करते हो तो सारे फज़ होते हुए
1:14:15गुजरते हैं। इनफैक्ट सिर्फ इतने ही फेसेस
1:14:17नहीं होते। इसके बीच में भी बहुत
1:14:19इंटरमीडिएट फसेस होते हैं जो हमें जानने
1:14:21की जरूरत नहीं है। वो अंदर से हिडन होते
1:14:22हैं। पर मेनमन यही है। सबसे पहले आपका फज़
1:14:25है वैलिडेट। अब वैलिड अब या तो आप यहां पे
1:14:27क्लिक करो तो वैलिडेट हो जाएगा या फिर आप
1:14:29अपने कमांड लाइन पे एम वी एन वैलिडेट लिख
1:14:31दो। ठीक है? मैं आपको वो बताता हूं। पर
1:14:32वैलिडेट का मतलब होता है कि आपके कोड के
1:14:34ना स्ट्रक्चर को वैलिडेट किया जाएगा कि
1:14:36बेसिकली आपके कोड में पोम फाइल होनी
1:14:38चाहिए। उसका स्ट्रक्चर सही होना चाहिए।
1:14:40ठीक है? सारी रिक्वायर्ड डिटेल्स प्रेजेंट
1:14:42होनी चाहिए। स्ट्रक्चरली देखना कि आपका
1:14:43कोड बिल्कुल सही है। पोम फाइल है। वो
1:14:45रीडेबल है। सब कुछ प्रेजेंट है
1:14:46वगैरह-वगैरह। है ना? अगला स्टेज है आपका
1:14:49कंपाइल। अब कंपाइल यहां पे मैंने कम कर भी
1:14:51दिया वैसे। कंपाइल का मतलब आपको पता ही है
1:14:53आपका कोड कंपाइल करते हैं। डॉट java फाइल
1:14:55को डॉट क्लास में कन्वर्ट किया जाता है।
1:14:56और आपको पता है वो आ जाता है आपके टारगेट
1:14:58फोल्डर के अंदर क्लासेस के अंदर। राइट?
1:15:00यहां पे आपकी सारे कंपाइल कोड इकट्ठा हो
1:15:02जाता है। और कंपाइल तो हमें वैसे भी पता
1:15:04है जावा के कोड को कंपाइल करने का मतलब
1:15:06क्या होता है? अगला है आपका टेस्ट। अगर आप
1:15:08रन करते हो टेस्ट फेस को। तो आपका जो भी
1:15:10कोड लिखा हुआ है वो टेस्ट होगा यूजिंग योर
1:15:13ओन टेस्ट केसेस। राइट? तो आपने अपने टेस्ट
1:15:15केसेस यहां पे लिखे होंगे जो यहां पे नहीं
1:15:16दिख रहे। पर अगर मैं अपने स्प्रिंग बूट
1:15:18एप्लीकेशन में जाऊं तो यहां पे उसने मेरे
1:15:20को कुछ हां ये देखो हेलो कंट्रोलर टेस्ट
1:15:22बना के दिया हुआ था। तो अगर मैं जो भी यूज़
1:15:24कर रहा हूं जे यूनिट मॉकेटो जिस तरीके से
1:15:26भी अपने यूनिट टेस्ट केस चेक करता हूं मैं
1:15:28उनको टेस्ट कर सकता हूं वो अपने आप टेस्ट
1:15:29हो जाएंगे। और आपको पता है अगर मैं टेस्ट
1:15:31पे क्लिक करूंगा तो पहले मेरा कोड वैलिडेट
1:15:32होगा फिर कंपाइल होगा और फिर टेस्ट होगा।
1:15:34राइट? ऑब्वियसली वैलिड कंपाइल होने के बाद
1:15:36ही आपका कोड टेस्ट हो सकता है। है ना? और
1:15:38टेस्ट किस पे होगा? जो भी आपने यहां पे
1:15:39टेस्ट केसेस लिखे होंगे उन केसेस पे। ठीक
1:15:40है? और उसके बाद है पैकेज। अब पैकेज मैंने
1:15:43आपको बताया था ना जैसे ही आप पैकेज पर
1:15:45क्लिक करते हो आपका जो भी कोड है उसकी जार
1:15:47फाइल बन जाती है और वो भी अगेन स्टोर हो
1:15:49जाती है आपकी टारगेट के अंदर राइट यहां पे
1:15:51कहीं जाके देखो मल्टीपल जार्स बनी हुई है
1:15:53क्योंकि एक बार मैंने आदित्य के नाम से
1:15:54स्टोर किया था एक बार मैंने सिंपल जार
1:15:56बनाई थी वगैरह वगैरह है ना तो यहां पे
1:15:58आपकी जार फाइल बन जाती है और स्टोर हो
1:15:59जाती है तो ये है पैकेज और आपको पता है
1:16:01पैकेज करूंगा तो सारे फेसेस होंगे तो पहले
1:16:03आपका कोड वैलिडेट होगा फिर कंपाइल होगा
1:16:05राइट क्योंकि जार फाइल जो बनती है वो डॉट
1:16:07क्लास फाइल की बनती है तो कंपाइल्ड कोड की
1:16:09बनेगी फिर आपका कोड टेस्ट होगा कि एक बार
1:16:11सब कुछ सही चल रहा है और तभी तभी आपकी जार
1:16:12फाइल बनेगी। राइट? बिना टेस्ट केसेस से
1:16:14गुजरे आपकी जार फाइल बन ही नहीं सकती।
1:16:16राइट? ऑब्वियसली कंसीडरिंग आपने टेस्ट
1:16:18केसेस लिखे हैं। वरना अगर आपने टेस्ट
1:16:19केसेस लिखे ही नहीं है तो जार फाइल तो ऐसे
1:16:21ही बन जाएगी जैसे अभी हमने नहीं लिखे थे।
1:16:23अब अगला फज़ है वेरीफाई। अब वेरीफाई फज़ में
1:16:25ना बहुत सारी चीजें आप टेस्ट कर सकते हो।
1:16:27जैसे इंटीग्रेशन टेस्टिंग यहां पे हो सकती
1:16:29है। राइट? या फिर यहां पे हम कोड की
1:16:31क्वालिटी को चेक कर सकते हैं। अब ये फज़
1:16:33करने के लिए ना आपको क्या करना पड़ेगा?
1:16:35आपको अपने pम डॉट एक्सml फाइल में तो
1:16:37बेसिकली अपने pm डॉट एक्सML फाइल में यहां
1:16:39पे तो हमारा प्लगइिंस नहीं है। अगर मैं
1:16:41स्प्रिंग बूट वाले pm डॉट एक्सML में जाऊं
1:16:42तो वहां पे देखो मेरे पास प्लगइन टैग है।
1:16:44राइट? इस प्लगइिंस में मैं मल्टीपल
1:16:46प्लगइिंस ऐड कर सकता हूं जिससे मैं अपने
1:16:48कोड को वेरीफाई कर सकता हूं। राइट? एक
1:16:50प्लगइन होगी जो मेरी कोड की क्वालिटी को
1:16:51टेस्ट करेगी। राइट? कि मैं फालतू के
1:16:53एक्स्ट्रा स्पसेस तो यूज़ नहीं कर रहा। मैं
1:16:54कोई ऐसे वेरिएबल्स तो यूज़ नहीं कर रहा जो
1:16:56मैंने डिक्लेअ कर दिए पर कहीं यूज़ ही नहीं
1:16:58किए। राइट? तो ऐसे कोड क्वालिटी मैं टेस्ट
1:17:00कर सकता हूं। इसको मैं टीम्स ओरिएंटेड डाल
1:17:02सकता हूं कि मेरी टीम में जो भी लोग काम
1:17:03करेंगे जब भी वो अपने प्रोजेक्ट को
1:17:05वेरीफाई करेंगे तो सारे चीजें पास होनी
1:17:07चाहिए। इंटीग्रेशन टेस्टिंग पास होनी
1:17:08चाहिए। यूनिट टेस्ट तो यहीं पे पास हो गया
1:17:10था। है ना? दूसरा कोड क्वालिटी सही होनी
1:17:12चाहिए। राइट? ये सब मैं कर सकता हूं अपने
1:17:15वेरीफाई फेज में। उसको इंस्टॉल करने से
1:17:17पहले। अब ये इंस्टॉल क्या है? अभी बताता
1:17:19हूं। अगला है मेरा इंस्टॉल फज़। यह बहुत
1:17:21इंटरेस्टिंग फज़ है क्योंकि जैसे ही आप
1:17:23इंस्टॉल फेस पे क्लिक करते हो आपका जो भी
1:17:26जार फाइल बनी थी वो आपके लोकल रिपोजिटरी
1:17:28पे इंस्टॉल हो जाती है। राइट? तो मैंने
1:17:30आपको कहा था ना जो आपका m2 फोल्डर है उसके
1:17:32अंदर जो रिपोजिटरी फोल्डर है वो आपके जार
1:17:34फाइल्स को भी होल्ड करता है लोकली। राइट?
1:17:36जो आप खुद से क्रिएट करते हो। तो जब भी आप
1:17:38यहां पे इंस्टॉल करोगे तो जो पैकेज से जार
1:17:40फाइल बनी होगी वो आपके लोकल रेपोजिटरी में
1:17:42जाकर के इंस्टॉल हो जाएगी। ठीक है? तो
1:17:44इनफैक्ट जब आप इंस्टॉल करोगे तो वो सारे
1:17:46फज़ से गुजरेगी। पहले वैलिडेट होगा, कंपाइल
1:17:48होगा, टेस्ट होगा, पैकेज बनेगा। फिर
1:17:50वेरीफाई भी होगा। यानी कि आपके लोकल में
1:17:52जाने से पहले आप पहले ही वेरीफाई कर सकते
1:17:54हो कि सारे टेस्ट केसेस इंटीग्रेशन के पास
1:17:56होने चाहिए। कोड क्वालिटी अच्छी होनी
1:17:58चाहिए वगैरह-वगैरह। या फिर आप कोड कवरेज
1:18:00चेक कर सकते हो। बहुत सारी चीजें चेक हो
1:18:01सकती है वेरीफाई में अलग-अलग प्लगइंस को
1:18:03डाल के। है ना? और इंस्टॉल में आप अपनी
1:18:05लोकल रेपोजिटरी पे अपने कोड को इंस्टॉल
1:18:08करते हो। और फाइनली आता है आपका डिप्लॉय।
1:18:11डिप्लॉय में जो आपने अपने लोकल रिपॉजिटरी
1:18:13में कोड को इंस्टॉल किया यानी कि जार फाइल
1:18:15या आर्टिफेक्ट को इंस्टॉल किया है वो आप
1:18:16डिप्लॉय कर देते हो रिमोट रिपॉजिटरी के
1:18:19अंदर। अब ये रिमोट रिपोजिटरी कौन सी होगी?
1:18:21जनरली ये कंपनी वाइड होती है। जब आप
1:18:23डिप्लॉय पे क्लिक करते हो तो क्या होगा?
1:18:24आपकी कंपनी की खुद की एक रिमोट रिपॉजिटरी
1:18:26बनी होती है जिसके बारे में हमने बात की
1:18:28थी यहां पे। अ कहां पे? यहां पे अदर रिमोट
1:18:30रिपॉजिटरीज पे। राइट? और आप वहां पे उसको
1:18:33अपलोड कर सकते हो ताकि बाकी लोग बाकी टीम
1:18:35मेंबर्स या दूसरी टीम्स के भी लोग आपकी
1:18:37जार फाइल को यूज़ कर सकें। अब यहां पे आप
1:18:40कंफ्यूज मत होना इस डिप्लॉय में या फिर जो
1:18:42हम गिट में अपने कोड को पुश करते हैं।
1:18:43राइट? गेट में हम अपने पूरे कोड को पुश
1:18:46करते हैं। लेट से गेट हब पे पुश करेंगे,
1:18:47गिट लैब पे पुश करेंगे वगैरह-वगैरह। है
1:18:49ना? वहां पर हमारा कोड मर्ज होता है
1:18:51प्रोडक्शन पे जाने के लिए। पर ये जो
1:18:53डिप्लॉय है इसका मतलब बस ये है कि हमारी
1:18:55जो रिमोट रिपोजिटरीज है जहां पे हमारी
1:18:56सारी जार्स पड़ी होंगी वहां पे मैंने अपने
1:18:59इस जार फाइल को भी डाल दिया। अपने
1:19:01आर्टिफेक्ट को डाल दिया ताकि इस टीम में
1:19:03कोई भी मेरी आर्टिफेक्ट को डाउनलोड कर
1:19:05सके। वहां पे उसे यूज़ कर सके
1:19:06वगैरह-वगैरह। राइट? जैसे मेरे पास मेवन
1:19:08सेंट्रल रिपॉजिटरी है जहां से मैं जार ले
1:19:10सकता हूं। सेम मैं अपने जार को भी डिप्लॉय
1:19:12कर सकता हूं। अपनी खुद की रिमोट रिपॉजिटरी
1:19:14के अंदर। राइट? ये बिल्कुल अलग है। यहां
1:19:15पे मैं सिर्फ जार्स को डाउनलोड या इंस्टॉल
1:19:17कर रहा हूं। वहां पे अपने कोड को डिप्लॉय
1:19:19करता हूं पूरे के पूरे जिसमें अपने कोड को
1:19:20प्रोडक्शन में रन करने के लिए यूज़ करता
1:19:22हूं। राइट? अब ये तो हो गया हमारा नॉर्मल
1:19:25फ्लो। ठीक है? अब ये तो हो गया हमारा
1:19:27डिफॉल्ट लाइफ साइकिल। ये क्लीन लाइफ
1:19:29साइकिल क्या है? देखो क्लीन लाइफ साइकिल
1:19:31में एक ही चीज आती है। क्लीन। ये
1:19:32इंडिपेंडेंट है। जब भी मैं क्लीन करता हूं
1:19:34ना तो मेरे यहां पे जितने भी ओल्ड बिल्ड्स
1:19:36हैं जो मेरे यहां पे टारगेट में स्टोर हो
1:19:38रखे होंगे वो सब क्लीन हो जाते हैं। तो
1:19:40देखो मैं करके दिखाता हूं। जैसे ही मैंने
1:19:41क्लिक किया क्लीन तो यहां पे मेरा देखो
1:19:43टारगेट हट गया। मेरा क्लीन हो गया और मेरे
1:19:45सारे लोकल जितने भी अभी मैंने यहां पे
1:19:47बनाए थे आर्टिफेक्ट्स वो सब डिलीट हो गए।
1:19:49ठीक है? वो वाले डिलीट नहीं हुए जो मेरे
1:19:51लोकल रिपोजिटरी में स्टोर हैं। नहीं जो
1:19:53मैंने अपने प्रोजेक्ट में अभी रखे हुए हैं
1:19:54वो सब जो मेरे टारगेट के अंदर थे बस वो सब
1:19:56डिलीट हो गए। रेपोजिटरी के मेरे वहीं
1:19:57मौजूद हैं। ओके? अब एक और फ्लो है साइट
1:20:00लाइफ साइकिल। यह डॉक्यूमेंटेशन के
1:20:02रिपोर्ट्स बनाने का काम आता है। अगर आप
1:20:03साइट पर क्लिक करोगे तो बेसिकली अभी तो
1:20:08तो देखो ये बहुत देर तक चल रहा है क्योंकि
1:20:10ये उसमें डॉक्यूमेंटेशंस उसकी देख रहा है
1:20:11कैसे बनानी है डाउनलोड सेंट्रल लाइब्रेरी
1:20:13से बहुत कुछ डाउनलोड होगा और देखो बिल्ड
1:20:15सक्सेस अगर मैं यहां पे टारगेट के अंदर
1:20:16जाऊंगा तो इसमें देखो आप साइट के अंदर
1:20:18सीएसएस इमेजज़ डिपेंडेंसी समरी इसने पूरे
1:20:22के पूरे डॉक्यूमेंटेशन और उसकी रिपोर्ट्स
1:20:23बना दी होंगी। राइट? इसकी जरूरत हमें
1:20:25ज्यादातर नहीं पड़ती है। हम इसको क्लीन कर
1:20:27लेते हैं वापस से। ठीक है? हमारा मेनली जो
1:20:29फ्लो रहेगा वो या तो डिफ़ॉल्ट फ्लो और
1:20:31क्लीन फ्लो रहेगा। अब दूसरी बात देखो अगर
1:20:34आप या तो यहां से मेवन के सारी लाइफ
1:20:37साइकिल को यूज़ कर सकते हो वैलिडेट कंपाइल
1:20:39क्लिक करके। ठीक है? नहीं तो आप यूज़ कर
1:20:41सकते हो अपने टर्मिनल को। आप अपने
1:20:43इंटेलिजें टर्मिनल खोल लो यहां से और आप
1:20:45यहां से भी लिख सकते हो एमवी एन कंपाइल और
1:20:48आपका कोड कंपाइल हो जाएगा। और सिर्फ
1:20:49कंपाइल नहीं होगा। आपको पता है पहले आपका
1:20:51कोड वैलिडेट होगा और फिर कंपाइल होगा।
1:20:54राइट? तो यहां से भी हो सकता है। पर पहली
1:20:56बार जब आप इस कमांड को चलाओगे तो आपके पास
1:20:58आ जाएगा कि एमवीएन इंस्टॉल नहीं है। वो
1:21:00आपको कमांड लाइन के लिए इंस्टॉल करना
1:21:01पड़ेगा टर्मिनल के लिए। तो अगर आप Mac में
1:21:04हो तो आप ब्रू का यूज़ कर सकते हो। तो आप
1:21:05लिख सकते हो सीधा ब्रू इंस्टॉल मेन नहीं
1:21:08तो अगर आप Windows यूज़ कर रहे हो तो
1:21:10Windows में भी आई गेस ब्रू की कोई
1:21:12अल्टरनेटिव होगा। आई गेस चोको तो है। है
1:21:13ना? चोको अगर अभी भी चलता है तो आप चोको
1:21:15को यूज़ कर सकते हो। चोको इंस्टॉल मेन अ
1:21:19hfन व आई गेस है ना? यहां से इंस्टॉल हो
1:21:21जाएगा। नहीं तो आप देख सकते हो मेवन को
1:21:23लोकली कैसे इंस्टॉल करना है। सिंपल तरीका
1:21:25तो है आप इस वेबसाइट पे जाओ मेवन
1:21:26रिपॉजिटरी पे। यहां से आप उसको डाउनलोड
1:21:28करके अपने कमांड लाइन पे उसका पाथ सेट कर
1:21:30दो। राइट? पर एक बार अगर आपने ये कर लिया
1:21:33जो कि आपको करना भी चाहिए। अब आप अपने
1:21:35कमांड लाइन से ही मेवन पे कमांड दे सकते
1:21:36हो। आप बस लिखोगे एमवी एन कंपाइल या फिर
1:21:39एमवी एन इंस्टॉल या फिर एमवी एन डिप्लॉय
1:21:42वगैरह-वगैरह। इंटरेस्टिंगली आप दो कमांड्स
1:21:45को जोड़ भी सकते हो। लेकिन दो अलग-अलग
1:21:47फेसेस से। दो अलग-अलग लाइफ साइकिल से।
1:21:49क्या मतलब? देखो आपके पास एक कमांड है अ
1:21:52लेट्स से कंपाइल और एक कमांड है क्लीन। तो
1:21:55आप कर सकते हो एमवीएन क्लीन कंपाइल। क्लीन
1:21:57कंपाइल क्या करेगा? पहले चीजों को क्लीन
1:21:58करेगा। तो जो भी आपने पहले के
1:22:00आर्टिफेक्ट्स बना रखे होंगे वो क्लीन हो
1:22:02जाएंगे और वो दोबारा से आपका कोड कंपाइल
1:22:04होगा। राइट? या फिर आप सबसे फेमस कमांड जो
1:22:06होती है वो होती है एमवीएन क्लीन इंस्टॉल।
1:22:09राइट? ये क्या करता है? आपके पुराने सारे
1:22:11आर्टिफेक्ट्स को डिलीट करता है। यहां पे
1:22:12जो आपने बना रखे होंगे टारगेट में। दोबारा
1:22:14से आपके पैकेजेस बनाता है। राइट? इंस्टॉल
1:22:17आपको पता है ना कहां आता है यहां पे। तो
1:22:18पहले आपका वैलिडेट करेगा, कंपाइल करेगा
1:22:20सारा कंपाइल होगा कोड। टेस्ट फसेस से
1:22:22गुजरेगा। पैकेज यानी कि आपकी जार फाइल
1:22:25बनेगी। वेरीफाई होगा। यहां पे हमारा कोई
1:22:26वेरीफाई फेस है नहीं तो स्किप हो जाएगा।
1:22:28टेस्ट भी और वेरीफाई भी स्किप हो जाएगा।
1:22:29और फाइनली इंस्टॉल मतलब आपके लोकल
1:22:32रिपोज़िटरी में M2 फोल्डर के अंदर आपके जार
1:22:34को इंस्टॉल कर देगा। ठीक है? तो याद रखना
1:22:36एमबीएन क्लीन इंस्टॉल बहुत ही फेमस कमांड
1:22:38है। हम इसको बार-बार यूज़ करते हैं। तो अगर
1:22:40मैं इसको देखो एमबीएन क्लीन इंस्टॉल
1:22:41करूंगा तो पहले मेरा यहां पे टारगेट
1:22:43फोल्डर क्लीन होगा। फिर नया फोल्डर बनेगा
1:22:45और मेरे लोकल रेपोज़िटरी में इसकी जार
1:22:47इंस्टॉल हो जाएगी। ये देखो बिल्ड सक्सेस
1:22:48तो इसने देखो मेरे को बता भी इसने कहां
1:22:50इंस्टॉल किया है मेरे यूज़र्स आदित्य टंडन
1:22:52के अंदर डॉट M2 फोल्डर उसके अंदर और
1:22:55एग्जांपल मेवन डेमो और ये रहा मेरी जार
1:22:57फाइल राइट हो सकता है आपको पूरी ना दिख
1:22:59रही हो इसको यहां पे कॉपी कर लेते हैं कुछ
1:23:02ऐसे देखो तो इसने यहां पे इंस्टॉल किया
1:23:03होगा मेरे यूजर के अंदर गया डॉट M2 फोल्डर
1:23:06रिपोज़िटरी के अंदर तो देखो ये रहा मेरा
1:23:07पूरा का पूरा फोल्डर स्ट्रक्चर ऑर्ग
1:23:09एग्जांपल मेवन डेमो ऑर्ग एग्जांपल अब यहां
1:23:12पे इसने मेवन डेमो नहीं बना रखा क्योंकि
1:23:13जो बाय डिफ़ॉल्ट मैंने मेवन का प्रोजेक्ट
1:23:15बनाया था उसने मेरे सिर्फ ग्रुप आईडी वो
1:23:17यूज़ किया यहां पे मेरी ग्रुप आईडी को
1:23:19फोल्डर स्ट्रक्चर में। उसके अंदर
1:23:20आर्टिफेक्ट आईडी यूज़ नहीं की पर जनरली वो
1:23:22यूज़ होती है। अगर आप अपनी स्प्रिंगbott
1:23:24एप्लीकेशन में देखोगे तो ऑर्ग कॉम डॉट
1:23:26एग्जांपल डॉट डेमो यहां पे लिखा हुआ है।
1:23:28राइट? तो पहले हम ग्रुप आईडी को यूज़ करते
1:23:30हैं। फोल्डर स्ट्रक्चर में उसके अंदर
1:23:32आर्टिफेक्ट आईडी यूज़ करते हैं। और उसके
1:23:33अंदर मेरी जावा फाइल होती है। राइट? तो
1:23:35मैं यहां पे उसको मैनुअली बना सकता था। पर
1:23:36वो हमने नहीं बनाया। कोई बात नहीं। पर
1:23:38इसने देखो फोल्डर स्ट्रक्चर वही रखा है।
1:23:40तो देखो पहले ग्रुप आईडी फिर आर्टिफेक्ट
1:23:41आईडी। उसके बाद वर्जन आईडी भी इसने यूज़
1:23:43किया। राइट? तो 1.0 स्नैपशॉट इसको भी एज अ
1:23:45फोल्डर बना दिया। 1.0 Snapshot उसके अंदर
1:23:48इसने रखा है मेरे जार का नाम जो कि क्या
1:23:50होता है? सबसे पहले मेरे आर्टिफेक्ट का
1:23:51नाम मेवन डेमो माइनस और जो मेरी वर्जन का
1:23:54नाम है 1.0 Snapshot डॉट जार देखो देखो
1:23:57मेवन डेमो 1.0 Snapsh डॉट जार राइट
1:24:00इनफैक्ट इस फोल्डर के अंदर मैं जाऊंगा तो
1:24:02मुझे मेरी जार फाइल भी मिल जाएगी। सबसे
1:24:03पहले देखो मैं गया अपने रेपोजिटरी के अंदर
1:24:05उसने ऑर्ग के अंदर उसके बाद मेरे को जाना
1:24:07है एग्जांपल के अंदर मेवन डेमो के अंदर और
1:24:09मेवन डेमो के अंदर 1.0 स्नैपशॉट और यहां
1:24:12पे आप देखो मिल जाएगी हां ये रही मेवन
1:24:14डेमो 1.0 स्नैपशॉट डॉट जार ये रही मेरी
1:24:17जार फाइल राइट ठीक है आई होप आपको मेवन के
1:24:20बारे में सब कुछ समझ आया होगा ये बहुत
1:24:22बड़ा लेक्चर हो गया पर यहां पे हमने
1:24:23कंप्लीटली मेवन को अच्छे से डेप्थ में
1:24:25स्टडी किया है राइट एक लास्ट चीज अगर मैं
1:24:28आपको बताना चाहूंगा तो जब भी आप मेवन का
Maven Archetypes
1:24:30प्रोजेक्ट बनाते हो लेट से मैंने यहां पे
1:24:31न्यू प्रोजेक्ट पे क्लिक किया तो आपके पास
1:24:33एक और ऑप्शन होता है आर्क टाइप्स का। तो
1:24:35देखो यहां पे लिखा होगा मेवन आर्क टाइप्स।
1:24:37आप यहां पे जाओ तो यहां पे ये क्या होता
1:24:39है? लेट्स से आपने प्रोजेक्ट का नाम रखा
1:24:41मेवन डेमो टू। डेमो टू। ठीक है? तो ये मैं
1:24:45इसकी लोकेशन रहने देता हूं जेडी के 23। अब
1:24:47यहां पे ना आर्क टाइप्स का मतलब होता है।
1:24:49तो ऐसे बने-बए टेंपल्लेट्स जो आप यूज़ कर
1:24:51सकते हो ताकि आपको खुद से स्टार्टिंग से
1:24:53कोड ना लिखना पड़े। राइट? तो फॉर एग्जांपल
1:24:55यहां पे होता है एक स्टार्टर। हां क्विक
1:24:58स्टार्ट। तो अगर मैं इस क्विक स्टार्ट का
1:24:59प्रोजेक्ट बनाऊंगा तो मुझे पहले से ही कुछ
1:25:01लिखी लिखाई चीजें मिल जाएंगी। हो सकता है
1:25:03कुछ डिपेंडेंसी इंस्टॉल मिल जाए। राइट? और
1:25:05ये सब तो है इसका इंटरनल कैटलॉग जो
1:25:07बेसिकली इस आईडी में पहले से प्रेजेंट है।
1:25:09इसलिए इसमें ऑप्शंस भी अगर आप देखोगे तो
1:25:11कम है। राइट? इतने से ही ऑप्शंस हैं। पर
1:25:13मेरे पास और भी कैटलॉग्स हैं जैसे कि मेवन
1:25:15सेंट्रल। तो मेवन सेंट्रल आपको पता है H1
1:25:17सेंट्रल रिपॉज़िटरी। तो यहां से भी आप बहुत
1:25:19सारे आर्क टाइप्स डाउनलोड कर सकते हो। बने
1:25:21बनाए आर्क टाइप्स आपको मिल जाएंगे। ठीक
1:25:23है? यहां पे देखो आप देखोगे तो स्प्रिंग
1:25:25बूट का भी आपको देखो स्प्रिंग जेपी का मिल
1:25:26गया। स्प्रिंग बूट वेब स्टार्टर राइट जो
1:25:29हमने बेसिकली स्प्रिंग इनिशलाइजर से बनाया
1:25:31था वो आप यहां से भी बना सकते हो बने बनाए
1:25:33टेंपल्लेट्स तो अगर मैं यहां पे लेट्स से
1:25:35एक इंटरनल में आपको एक बना के दिखाऊं जे
1:25:37डी के लेट्स से एक क्विक स्टार्ट नाम से
1:25:40होगा यस तो ये मुझे कोई ना कोई बॉईलर
1:25:41प्लेट कोड पहले से बना के दे देगा लेट्स
1:25:43से वर्जन 1.1 ही रखते हैं एडिशनल सेटिंग्स
1:25:45पे मेरे पास ठीक है ये सब सेट हो रखा है
1:25:48मैं करता हूं क्रिएट और न्यू विंडो और ये
1:25:51सब मेरा न्यू विंडो पे खुल जाएगा इसको
1:25:53थोड़ा सा टाइम देते हैं हां तो मेरा बिल्ड
1:25:54सक्सेस हो गया ठीक है तो अब देखो इसने
1:25:57मुझे कुछ बना के दिया है। सबसे पहले मेरी
1:25:58पॉम डॉट एक्सml फाइल में एक डिपेंडेंसी
1:26:00पहले से प्रीइस्टॉल्ड मिली है मुझे j
1:26:02यूनिट की राइट तो मॉकटो की बेसिकली और अगर
1:26:04मैं सोर्स खोलूंगा मेन के अंदर देखो इसने
1:26:06मुझे एक ऐप बना के दिया है। उसने हेलो
1:26:08वर्ल्ड लिखा हुआ है ऑब्वियसली और ऐसे ही
1:26:10शायद मुझे हां एक ऐप टेस्ट बना के दी होगी
1:26:12इसकी बेसिकली टेस्ट फाइल यूनिट टेस्ट
1:26:14केसेस वहां लिखे होंगे। राइट? तो बेसिकली
1:26:16इसने मुझे कुछ पहले से एक टेंप्लेट बना के
1:26:18दे दिया जिसपे मैं काम करना शुरू कर सकता
1:26:20हूं। और यही है मेरा आर्क टाइप्स। इन
1:26:22फैक्ट मैं मल्टीपल तरीके के आर्क टाइप्स
1:26:24देख सकता हूं। जैसे मैंने आपको बताया अगर
1:26:25मैं यहां पे जाऊंगा ना तो मेरे को इंटरनल
1:26:27से अगर मैं मेन सेंटर पे जाऊं कहां है?
1:26:29हां स्प्रिंग बूट स्टार्टर आर्क टाइप्स।
1:26:31राइट? मैं इसको भी सेलेक्ट कर सकता हूं।
1:26:33तो जो बेसिकली अगर लेट्स से यहां पे मैं
1:26:34इसका नाम रखता हूं स्प्रिंग इसका नाम रखता
1:26:36हूं लेट्स से स्प्रिंग बूट डेमो। ठीक है?
1:26:39कुछ इस तरीके से और अगेन एडवांस सेटिंग्स
1:26:42में मैं ये सब सेम ही रख लेता हूं। ठीक
1:26:43है? ये सब फालतू के प्रोजेक्ट्स मैं बाद
1:26:44में डिलीट कर दूंगा। पर अभी के लिए मान लो
1:26:46मैंने यहां पे ये चूज़ किया। मैंने किया
1:26:48क्रिएट और न्यू विंडो। तो एक इसको थोड़ा
1:26:51सा लोड होने देते हैं। और हो गया हमारा
1:26:54बिल्ड सक्सेस। और देखो इसने मुझे स्प्रिंग
1:26:56बूट का एक स्टार्टर पैक बना के दे दिया।
1:26:58जिसकी अगर मैं pm डॉट एक्सML फाइल के अंदर
1:27:00जाऊंगा तो देखो ये रही मेरी pm एक्सml ये
1:27:03ऊपर बहुत सारा कमेंट है। कुछ लाइसेंस ऑफ़
1:27:05apacचे वगैरह-वगैरह। तो अब अगर मैं इस पे
1:27:07डिपेंडेंसीज़ पे जाऊंगा तो देखो इसने मुझे
1:27:08स्प्रिंग बूट स्टार्टर वाली डिपेंडेंसी दे
1:27:10दी। राइट? तो जो मुझे या तो स्प्रिंग
1:27:12इनिशलाइजर से मिली थी वो भी मिल गई। एक
1:27:14स्प्रिंग बूट स्टार्टर प्रोवाइडर की कोई
1:27:15डिपेंडेंसी है और एक हाइबरनेट का वैलिडेटर
1:27:17है। ठीक है? और एक हाइपरनेट वैलिडेटर है।
1:27:19ठीक है? तो अगेन हो सकता है मुझे
1:27:21डिपेंडेंसी चाहिए। हो सकता है ना चाहिए
1:27:22हो। जो चाहिए होगी वो मैं रख लूंगा। जो
1:27:24नहीं चाहिए होगी वो हटा दूंगा। ठीक है?
1:27:25कुछ प्लगिंस ने मुझे ला के दे दी है।
1:27:27राइट? अब प्लगिंस मैंने आपको बताया था काम
1:27:29आती है जब आप क्या करते हो? लाइफ साइकिल
1:27:31में वैलिडेट स्टेज पे जाते हो। वेरीफाई
1:27:32स्टेज पे सॉरी वेरीफाई स्टेज पे आप कुछ
1:27:34प्लगइिंस इंस्टॉल कर सकते हो। तो खैर ये
1:27:36सब चीजें हो गई। और हमने सोर्स फाइल के
1:27:38अंदर इसने जावा में देखो एक हेलो कंज्यूमर
1:27:40और हेलो इंप्लीमेंटेशन ये सब कुछ बना के
1:27:42दे दिया। अगेन हम नाम थोड़ा इससे डिफरेंट
1:27:44रखते हैं। नेमिंग कन्वेंशन अलग होती है।
1:27:46आप चाहो तो इसको यूज़ कर सकते हो। नहीं तो
1:27:48हमारे पास स्प्रिंग इनिशलाइजर तो है ही।
1:27:50ठीक है? आई होप आपको मजा आया होगा। बहुत
1:27:52कुछ सीखने को मिला होगा। बहुत लंबा लेक्चर
1:27:54हो गया। पर यहां पे हमने मेवन को डेप्थ
1:27:56में समझा है। कभी आपको मेवन में कोई
1:27:57प्रॉब्लम नहीं आने वाली। अब नेक्स्ट
1:27:59लेक्चर से आप मेवन को ईजीली यूज़ कर पाओगे।
1:28:01आपसे मिलते हैं नेक्स्ट लेक्चर में। तब तक
1:28:03के लिए थैंक यू सो मच।