अपाचे के पास निर्माण और निर्भरता प्रबंधन के लिए दो अलग-अलग उपकरण क्यों हैं?


9

अपाचे के दो अलग-अलग उपकरण हैं:

वे दोनों एक ही आला को भरने लगते हैं। मेरे दो सवाल हैं:

  1. क्या हैं पर प्रकाश डाला दो उपकरणों के बीच मुख्य अंतर यह है?
    • मुझे यकीन है कि वास्तव में एक लंबा लेख दोनों के बीच मतभेदों पर लिखा जा सकता है, मैं उतना विस्तार नहीं देख रहा हूं, और न ही मैं एक दूसरे को चुनने के लिए व्यक्तिपरक तर्क की तलाश कर रहा हूं।
  2. प्रोग्रामिंग का इतिहास - यह कैसे हुआ कि अपाचे दो पूरी तरह से अलग उपकरणों के सेट बनाने के लिए विकसित हुआ जो अंततः उद्देश्य में समान हैं?

जवाबों:


7

क्या हैं पर प्रकाश डाला दो उपकरणों के बीच मुख्य अंतर यह है?

  • परियोजना की संरचना

    • मावेन एक विशिष्ट परियोजना संरचना को प्राथमिकता देता है: किसी को मावेन वे करने के लिए प्रतिबद्ध होना चाहिए। मावेन आम बिल्ड चरणों के साथ आता है जो पहले से ही एक रूट में कॉन्फ़िगर किया गया है pom.xmlजो आमतौर पर अन्य सभी प्रोजेक्ट के द्वारा विरासत में मिला है pom.xml

    • चींटी + आईवी अधिक खुले सिरे वाली है: जबकि यह बहुत कुछ कर सकती है, प्रोजेक्ट संरचना या स्क्रिप्ट के उपयोग के संदर्भ में कुछ बुनियादी आवश्यकताएं हैं। कोई पूर्वनिर्धारित निर्माण कार्य, लक्ष्य या प्रक्रियाएँ नहीं हैं। प्रत्येक build.xmlएक साफ स्लेट है (जब तक कि एक और स्क्रिप्ट शामिल नहीं है, निश्चित रूप से)।

  • अभिविन्यास

    • मावेन लक्ष्य उन्मुख है। आप यह नहीं कहते हैं कि "इस निर्माण लक्ष्य को निष्पादित करें" आप इसे "निर्माण" या "तैनात" करने के लिए कहते हैं और मावेन को वहां पहुंचने के लिए जो कुछ भी करना पड़ता है: आप कहते हैं कि आप क्या करना चाहते हैं।

    • चींटी + आइवी कार्य उन्मुख है। प्रत्येक कार्य कार्यान्वयन-परिभाषित और कस्टम है। आप इसे बता कैसे आप क्या चाहते हैं क्या करना है।

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

    • मावेन स्वचालित रूप से निर्भरता से निपटने के लिए सबसे अच्छा जाना जाता है। यह बिना किसी उपयोगकर्ता सहभागिता के निर्माण के दौरान सही संस्करण डाउनलोड करेगा, जब तक कि रिपॉजिटरी URL समय से पहले ठीक से कॉन्फ़िगर नहीं हो जाते।

    • चींटी के पास "जावा क्लासपथ" को छोड़कर कोई निर्भरता प्रबंधन नहीं है। आइवी निर्भरता प्रबंधन को जोड़ता है जो मावेन की तुलना में थोड़ा अधिक थकाऊ है लेकिन फिर भी स्वचालित है। यहां कुंजी यह है कि आप कोई निर्भरता प्रबंधन नहीं चुन सकते हैं (उदाहरण के लिए "मेरे डिस्ट्रो में शामिल जार या स्रोत नियंत्रण में जाँच") या आप इसे आइवी के माध्यम से आउटसोर्स कर सकते हैं। उस विकल्प का मतलब है परियोजना की जरूरतों को पूरा करने के लिए अधिक लचीलापन।

  • उपयोग में आसानी

    • मावेन (सिद्धांत में) उपयोग करने में आसान है। कोई भी डेवलपर एक मावेन परियोजना को उठा सकता है और तुरंत जान सकता है कि परियोजना के सभी संसाधन कहाँ स्थित हैं और वे किसके लिए हैं: यह पहली बात मावेन के बारे में एक विशिष्ट तरीका है।

    • चींटी + आइवी में एक स्टेटर सीखने की अवस्था हो सकती है क्योंकि प्रत्येक परियोजना अलग हो सकती है। विभिन्न परियोजनाओं में एक ही लक्ष्य को पूरा करने के विभिन्न तरीके हो सकते हैं।

  • तानाना

    • मावेन प्लगइन्स लिखने और इसकी निर्माण प्रक्रिया को बदलने की अनुमति देता है। हालाँकि, यह एक रूट के साथ बॉक्स से बाहर आता है pom.xmlजो डेवलपर्स को अपनी पूर्वनिर्धारित निर्माण प्रक्रियाओं की ओर धकेलता है। नए लक्ष्यों या बिल्ड चरणों को बिल्ड प्रक्रिया में इंजेक्ट करने के लिए सावधानीपूर्वक विचार और अतिरिक्त प्रयास की आवश्यकता होती है।

    • चींटी + आइवी भी प्लगइन्स और नए कार्यों को लिखने की अनुमति देता है: ऐसा करना काफी आसान है और कोई भी न्यूनतम प्रयास के साथ नए कार्य को एकीकृत कर सकता है। चारों ओर फेरबदल करने या किसी के नए कार्य को एकीकृत करने के लिए कोई पूर्व निर्धारित लक्ष्य या लक्ष्य नहीं हैं।

यह कैसे हुआ कि अपाचे उपकरण के दो पूरी तरह से अलग सेट बनाने के लिए विकसित हुआ जो अंततः उद्देश्य में समान हैं?

समझने वाली पहली बात यह है कि अपाचे परियोजना एक छाता से ज्यादा कुछ नहीं है जिसके तहत अलग, स्वतंत्र परियोजनाएं संचालित होती हैं। अलग-अलग टीमें अलग-अलग प्रोजेक्ट पर काम करती हैं। जबकि व्यक्तिगत डेवलपर्स कई परियोजनाओं पर काम कर सकते हैं, वहाँ कुछ समग्र रोडमैप नहीं है जो चींटी, आइवी और मावेन को शामिल करता है।

चींटी पहले आई। इसे मेक के बराबर जावा डिजाइन किया गया था। जबकि मेक जावा प्रोजेक्ट्स का निर्माण कर सकता है, यह थकाऊ है: मेक इन कंप्लीशन यूनिट्स के एक समूह को अलग से संकलित करने के लिए मौजूद है, फिर उन्हें लिंक करें। जावा तरीका javacएक बार में सब कुछ संकलित करता है, और जिसे हम "लिंकिंग" कहते हैं, वास्तव में रनवे के दौरान जेवीएम के हिम्मत में होता है। मेक काम के लिए सही उपकरण नहीं था: जावा के लिए एक मेकाइल मूल रूप से एक या दो लक्ष्य ( javac, jar) है।

चींटी ने मेक के ऊपर थोड़ा सा ढांचा जोड़ा, लेकिन मौलिक रूप से प्रक्रिया में बदलाव नहीं किया।

थोड़ी देर बाद समुदाय को पता चला कि जार फ़ाइलों का शिकार करना मज़ेदार नहीं था। इसके अलावा, परियोजनाओं की रचना के लिए कोई मानक तरीका नहीं था। निरंतरता के साथ, जावा विकास एक गड़बड़ था। मावेन को इन समस्याओं को हल करने के लिए डिज़ाइन किया गया था: यह एक सामान्य परियोजना संरचना लाएगा और जार फ़ाइलों के शिकार को स्वचालित करेगा।

हालांकि, चींटी अभी भी उपयोगी थी। कुछ परियोजनाएं चींटी की प्रक्रियाओं की तदर्थ प्रकृति के लिए खुद को अधिक उधार देती हैं। कुछ परियोजनाएं कोड का संकलन नहीं कर रही हैं। कुछ परियोजनाएं पुरानी थीं और यह संभव नहीं था कि कोई भी उन्हें मावेन को "अपग्रेड" करेगा।

आईवी के साथ: यह चींटी पर निर्भरता प्रबंधन को जोड़ता है, जिससे दोनों दुनिया के सबसे अच्छे प्रोजेक्ट मिलते हैं। आप अपनी विरासत स्क्रिप्ट्स, या आप अत्यधिक अनुकूलित वातावरण रख सकते हैं, लेकिन मावेन की सबसे महत्वपूर्ण विशेषता: निर्भरता प्रबंधन।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.