मेरे असंतोष के कारणों पर चर्चा करने से पहले, मुझे मावेन के बारे में कुछ शब्द कहने की आवश्यकता है। मैं इसे विस्तार से नहीं बताऊंगा, बस इसकी मुख्य विशेषताओं को संक्षेप में बताऊंगा।
मावेन क्या है?
साइट पर विवरण कहता है कि मावेन एक सॉफ्टवेयर परियोजना प्रबंधन उपकरण है। वास्तव में, मावेन चींटी और उपकरण जैसे उपकरणों के समान कई तरीकों से लक्ष्यों के संदर्भ में, एक परियोजना की विधानसभा के प्रबंधन के लिए एक प्रणाली है। मावेन की विशिष्ट विशेषताएं इस प्रकार हैं:
- विन्यास पर अधिवेशन की प्रधानता। यदि परियोजना कुछ मानकों का पालन करती है, तो मावेन खुद समझ जाएगा कि परियोजना को इकट्ठा करने के लिए क्या और कैसे करना है। परियोजना का वर्णन केवल वही बताता है जो मानक से भिन्न होता है (उदाहरण के लिए, एक गैर-मानक निर्देशिका संरचना)।
- निर्भरता प्रबंधन यदि किसी परियोजना को असेंबल करने (या निष्पादित करने के लिए) के लिए कुछ अतिरिक्त पुस्तकालयों की आवश्यकता होती है, तो यह परियोजना विवरण में उन्हें निर्दिष्ट करने के लिए पर्याप्त है - मावेन उन्हें खुद डाउनलोड करेगा, यह पता लगाना होगा कि किस संस्करण की आवश्यकता है, और अगर ये पुस्तकालय, बदले में, अन्य पुस्तकालयों पर निर्भर करते हैं, तो मावेन उन्हें डाउनलोड करता है, और इसी तरह। इसके लिए, मावेन दूरस्थ रिपॉजिटरी (रिपॉजिटरी, रिपॉजिटरी) का उपयोग करता है, जिसमें पुस्तकालयों और उनके विवरण संग्रहीत होते हैं।
- वर्णनात्मक भाषा। इसी तरह के अन्य उपकरणों के विपरीत, मावेन परियोजना विवरण का सटीक उपयोग करता है, जिसे प्रोजेक्ट ऑब्जेक्ट मॉडल कहा जाता है, जिसे POM के रूप में संक्षिप्त किया जाता है (मैं इसे "प्रोजेक्ट मॉडल" के रूप में संदर्भित करूंगा)। मॉडल यह इंगित नहीं करता है कि परियोजना को इकट्ठा करने के लिए क्या, कैसे और कब पूरा किया जाना चाहिए; इसके बजाय, यह वर्णन करता है कि परियोजना कैसे संरचित है, यह क्या निर्भर करता है, और इसी तरह। यह माना जाता है कि मेवेन स्वतंत्र रूप से यह पता लगाएंगे कि इस जानकारी के आधार पर परियोजना को कैसे इकट्ठा किया जाए।
- कठोर विधानसभा अनुक्रम आरेख। मावेन का सुझाव है कि सभी परियोजनाओं की असेंबली कई प्रकार के असेंबली सीक्वेंस (मावेन की शब्दावली "जीवन चक्र", जीवनचक्र) में फिट होती हैं। अनुक्रम में कुछ चरण होते हैं (संसाधनों का संसाधन, संकलन, परीक्षण, पैकेजिंग, स्थापना ...), जो परियोजना एक कड़ाई से कार्य क्रम में गुजरती है। प्रोजेक्ट मॉडल विशिष्ट विवरण निर्दिष्ट करता है कि एक या दूसरे चरण में क्या किया जाना चाहिए ("संकलन करते समय इन कंपाइलर विकल्पों का उपयोग करें")।
वास्तविकता
जैसा कि आप देख सकते हैं, सिद्धांत रूप में, मावेन एक बहुत शक्तिशाली और दिलचस्प उपकरण है। व्यवहार में, चित्र कुछ अलग दिखता है। बेशक, मावेन के कुछ फायदे हैं, लेकिन यह भी, इसके अलावा, कई बहुत ही कमियां हैं।
चलो गुण के साथ शुरू करते हैं। मावेन के साथ विधानसभा बहुत सरल है। यह प्रोजेक्ट के रूट पर mvan क्लीन इनस्टॉल लिखने के लिए पर्याप्त है - और प्रोजेक्ट इकट्ठा हो जाएगा! आवश्यक पुस्तकालयों को खोजने और डाउनलोड करने की आवश्यकता नहीं है, स्क्रिप्ट का अध्ययन करने की आवश्यकता नहीं है। यह टीम हमेशा प्रोजेक्ट के प्रकार की परवाह किए बिना काम करेगी।
इसके अलावा, चूंकि मावेन निर्देशिका संरचना को मानकीकृत करने में बहुत सहायक है (पढ़ें: गैर-मानक संरचना के साथ काम करना बेहद कठिन है), यह समझना हमेशा काफी आसान होता है कि क्या स्थित है।
चूंकि परियोजना को एक मॉडल के रूप में वर्णित किया गया है, इसलिए कुछ दिलचस्प चीजें संभव हो जाती हैं। उदाहरण के लिए, आप स्वचालित रूप से के लिए एक परियोजना बना सकते हैं, उदाहरण के लिए, मावेन परियोजना से ग्रहण - इस मामले में, सभी निर्देशिकाओं को ग्रहण परियोजना में सही ढंग से कॉन्फ़िगर किया जाएगा, पुस्तकालयों को जोड़ा जाएगा, और इसी तरह।
फायदे की इस सूची पर समाप्त होता है। हम नुकसान की ओर मुड़ते हैं।
मावेन को खराब तरीके से प्रलेखित किया गया है। प्रलेखन वहाँ लगता है, लेकिन कई सवालों के जवाब ढूंढना लगभग असंभव है। यह मावेन और उसके प्लगइन्स दोनों पर लागू होता है। इसके अलावा, यहां तक कि पुस्तक "मावेन: निश्चित गाइड", हालांकि यह कई चीजों को स्पष्ट करता है, लेकिन बहुत सारे सवालों को खोलता है।
मावेन बातूनी है, लेकिन एक ही समय में अनजाने में। मानक मोड में, यह विधानसभा के दौरान सभी प्रकार की सूचनाओं की एक बड़ी मात्रा को प्रदर्शित करता है, आमतौर पर पूरी तरह से अनावश्यक। डिबग मोड सिर्फ एक आपदा है! इस मोड में हमारी परियोजना पर, मावेन ने विधानसभा के दौरान 80 हजार से अधिक लाइनें प्रदर्शित कीं! इसी समय, त्रुटि संदेश और समस्याएं अक्सर बेहद धूमिल और रहस्यमय होती हैं।
प्रोजेक्ट मॉडल लंबे, खराब पठनीय और संशोधित करने में मुश्किल हैं। XML- आधारित सुनसान सिंटैक्स मॉडल वंशानुक्रम, जिसके परिणामस्वरूप आपको अक्सर यह निर्धारित करने के लिए कई मॉडलों को देखना होगा कि कौन सा कॉन्फ़िगरेशन अंततः विधानसभा में उपयोग किया जाएगा; मॉडल के विभिन्न हिस्सों में कॉन्फ़िगरेशन का स्मीयरिंग उन कारकों की पूरी सूची से दूर है जो ऐसी स्थिति को जन्म देते हैं।
निर्माण प्रक्रिया बाहरी प्रणालियों पर निर्भर करती है। अर्थात् - रिपॉजिटरी से। मेरे पास एक मामला था जब एक नए कर्मचारी को परियोजना की विधानसभा के साथ अस्पष्टीकृत समस्याएं थीं। अंत में, यह पता चला कि रिपॉजिटरी में से एक ने URL बदल दिया। जिन लोगों से मावेन पहले से ही उन सभी को डाउनलोड करने में कामयाब रहे, जिनकी आवश्यकता नहीं है; लेकिन नए कर्मचारी इस परियोजना को इकट्ठा नहीं कर सके।
असेंबली प्रक्रिया के दौरान मावेन बड़ी संख्या में विभिन्न फ़ाइलों को डाउनलोड करता है। तथ्य यह है कि मावेन निर्भरता प्रबंधन प्रणाली के तत्वों में से एक स्थानीय भंडार है। असेंबली, मावेन के लिए आवश्यक सभी चीजें इस बहुत ही स्थानीय रिपॉजिटरी में डाउनलोड और इंस्टॉल होती हैं। एक तरफ, यह अच्छा है - अगर कई परियोजनाओं में एक पुस्तकालय की आवश्यकता होती है, तो इसे केवल एक बार डाउनलोड किया जाएगा, और फिर मावेन इसे इस स्थानीय भंडार से ले जाएगा। दूसरी ओर, डाउनलोड की गई राशि अद्भुत है। उदाहरण के लिए, मेरे काम करने वाले कंप्यूटर पर, जिस पर मैंने लगभग पांच अलग-अलग (लेकिन एक ही प्रकार की) परियोजनाओं को इकट्ठा किया, रिपॉजिटरी एक गीगाबाइट से अधिक लेती है, और इसमें साढ़े चार हजार फाइलें और निर्देशिकाएं शामिल हैं!
"पास-असेंबली" कार्यों के स्वचालन के लिए मावेन खराब अनुकूल है। मैं अक्सर अलग-अलग परियोजनाओं में कुछ कार्यों को पूरा करता था, जो अक्सर मुख्य विधानसभा से संबंधित नहीं होते थे, जो आवश्यक स्वचालन: प्रोजेक्ट के एक हिस्से से दूसरे में फ़ाइलों की प्रतिलिपि बनाएँ, कोड को एनालाइज़र के साथ संसाधित करें, कुछ निर्देशिकाओं को साफ़ करें, और इसी तरह। जब मैंने चींटी का उपयोग किया, तो मैंने परियोजना में अतिरिक्त लक्ष्य बनाए - और सब कुछ ठीक था (ठीक है, हाँ, परियोजना जटिल थी, लेकिन सब कुछ दस्तावेजी था)। मावेन सिर्फ ऐसा मौका नहीं देता।
विधानसभा अनुक्रम के संबंध में बहुत कठिन मावेन दृष्टिकोण उन मामलों में बहुत मुश्किलें पैदा करता है जब आपको इस क्रम से कम से कम एक कदम आगे बढ़ने की आवश्यकता होती है। उदाहरण के लिए, कुछ बिंदु पर मुझे एक ही मॉड्यूल को दो बार संकलित करने की आवश्यकता थी, लेकिन विभिन्न सेटिंग्स के साथ, और फिर दोनों परिणामों को अलग-अलग स्थानों पर अलग-अलग नामों से रखा। यह बहुत, बहुत गैर-तुच्छ निकला।
मावेन को समझना और मास्टर करना मुश्किल है। कारण - उपरोक्त सभी।
निष्कर्ष
अधिकांश भाग के लिए मावेन की विशेषताएं, लाभ की तुलना में अधिक समस्याएं लाती हैं। शायद मावेन एक स्थिर चरण में परियोजनाओं के लिए अच्छा हो सकता है, जब परियोजना की संरचना में बदलाव लगभग नहीं हो रहे हैं। परियोजना के सक्रिय चरण में, जब विधानसभा की प्रक्रिया अभी तक पूरी तरह से नहीं बन पाई है - नए मॉड्यूल जोड़े जाते हैं, भाग चलते हैं - मावेन सिरदर्द का एक अंतहीन स्रोत में बदल जाता है।
मैं खुद मावेन के उपयोग को छोड़ना चाहता हूं, और एंट + आइवी के संयोजन पर स्विच करना चाहता हूं। चींटी परियोजना के निर्माण का एक बड़ा काम करेगी, और आइवी इसमें निर्भरता को प्रबंधित करने की क्षमता को जोड़ देगा, मावेन की बहुत क्षमता, जो अन्य साधनों में बहुत कमी थी।