मावेन के पास ऐसा बुरा प्रतिनिधि क्यों है? [बन्द है]


99

मावेन कैसे खराब है, इस बारे में इंटरनेट पर बहुत चर्चा है। मैं कुछ वर्षों से मावेन की कुछ विशेषताओं का उपयोग कर रहा हूं और मेरे विचार में सबसे महत्वपूर्ण लाभ निर्भरता प्रबंधन है।

मावेन प्रलेखन पर्याप्त से कम है, लेकिन आम तौर पर जब मुझे कुछ हासिल करने की आवश्यकता होती है तो मैं इसे एक बार समझ लेता हूं और फिर यह काम करता है (उदाहरण के लिए जब मैंने जार पर हस्ताक्षर किए थे)। मुझे नहीं लगता कि मावेन महान है, लेकिन यह कुछ समस्याओं को हल करता है जो इसके बिना एक वास्तविक दर्द होगा।

तो, मावेन के साथ ऐसा बुरा व्यवहार क्यों होता है और मावेन के साथ मुझे भविष्य में क्या समस्याएं हो सकती हैं? शायद बहुत बेहतर विकल्प हैं जिनके बारे में मुझे नहीं पता है? (उदाहरण के लिए, मैंने कभी भी आइवी को विस्तार से नहीं देखा।)

नोट: यह तर्क देने का प्रयास नहीं है। यह FUD को खाली करने का एक प्रयास है।


29
मैंने कभी किसी को मावेन के बारे में बुरा बोलते नहीं सुना। मैंने पाया है कि चींटी की तुलना में मावेन के साथ बहुत अधिक उत्पादक परियोजनाएं हैं।
टेलर लेसे

2
मैं टेलर से सहमत हूं। मैंने मावेन का उपयोग नहीं किया है, लेकिन मैंने कई लोगों को इसके बारे में बोलते हुए सुना है। यह प्रश्न बहुत कुछ FUD जैसा लगता है।
मैथ्यू फ्लैशेन

27
@Taylor, @Matthew, @victor: मुझे आश्चर्य है कि आपने मावेन के कुछ किराए नहीं देखे हैं। यह एक बहुत ही विभाजनकारी उपकरण है। यह एक वास्तविक प्यार है-या-नफरत-यह बात है। कुछ लोग निर्भरता-प्रबंधन की चतुराई से प्यार करते हैं और उन पर यह आरोप लगाते हैं कि उन्हें यह पसंद नहीं है और वे इसे पसंद नहीं करते हैं, और कुछ लोग केवल उन समस्याओं को देखते हैं जो जटिल वितरित निर्भरता के साथ हो सकती हैं और इसका फैसला कर सकती हैं कि यह परेशानी के लायक नहीं है।
डैन डायर

8
Maven KISS सिद्धांत सम्मान नहीं करता। Mvan क्लीन इंस्टॉल के अलावा कुछ भी करने की कोशिश करें और आप परेशानी में हैं। चींटी के साथ आप बिना किसी दर्द के जो चाहें कर सकते हैं।
ट्रेडरज्योइकोगो

4
यह केवल एक किस्सा है, लेकिन मावेन से चींटी की ओर बढ़ते हुए हमारे वृद्धिशील निर्माण का समय ~ 15 से अच्छी तरह से 2 मिनट से अधिक हो गया। आपको हमारी टीम में बहुत सारे मावेन प्रशंसक नहीं मिलेंगे।
पीटर ब्रैटन

जवाबों:


141

मैंने करीब छह महीने पहले मावेन में देखा था। हम एक नई परियोजना शुरू कर रहे थे, और समर्थन के लिए कोई विरासत नहीं थी। ने कहा कि:

  • मावेन सब-कुछ है। या कम से कम जहाँ तक मैं प्रलेखन से बता सकता था। आप आसानी से चींटी के बदले ड्रॉप-इन प्रतिस्थापन के रूप में मावेन का उपयोग नहीं कर सकते हैं, और धीरे-धीरे अधिक उन्नत सुविधाओं को अपना सकते हैं।
  • प्रलेखन के अनुसार, मावेन पारलौकिक खुशी है जो आपके सभी जंगली सपनों को सच कर देता है। आपको प्रबुद्ध होने से पहले सिर्फ 10 साल के लिए मैनुअल पर ध्यान करना होगा।
  • मावेन आपके निर्माण की प्रक्रिया को आपके नेटवर्क कनेक्शन पर निर्भर करता है।
  • मेवेन के पास बेकार त्रुटि संदेश हैं। मवन के "अमान्य कार्य 'रन' में चींटी के" लक्ष्य x का अस्तित्व नहीं है "की तुलना करें: आपको एक मान्य जीवनचक्र चरण या प्रारूप प्लगइन में एक लक्ष्य निर्दिष्ट करना होगा: लक्ष्य या प्लगइनग्रेग आईड: pluginArtifactsd: pluginVersion: लक्ष्य" सहायक रूप से, यह सुझाव देता है कि मैं अधिक जानकारी के लिए mvn को चलाता हूं, जिसका अर्थ है कि यह एक ही संदेश प्रिंट करेगा, फिर एक BuildFailureException के लिए एक स्टैक ट्रेस।

मावेन के लिए मेरी नापसंद का एक बड़ा हिस्सा मावेन के साथ बेहतर बिल्ड से निम्नलिखित अंश द्वारा समझाया जा सकता है:

जब कोई जानना चाहता है कि मावेन क्या है, तो वे आमतौर पर पूछेंगे "वास्तव में मावेन क्या है?", और वे एक छोटे, ध्वनि-काटने वाले उत्तर की उम्मीद करते हैं। "वैसे यह एक बिल्ड टूल या स्क्रिप्टिंग ढांचा है" मावेन तीन उबाऊ, अनसुने शब्दों से अधिक है। यह विचारों, मानकों और सॉफ्टवेयर का एक संयोजन है, और मावेन की परिभाषा को केवल ध्वनि-पचा को पचा पाना असंभव है। क्रांतिकारी विचारों को अक्सर शब्दों के साथ व्यक्त करना मुश्किल होता है।

मेरा सुझाव: यदि आप विचारों को शब्दों के साथ व्यक्त नहीं कर सकते हैं, तो आपको इस विषय पर एक पुस्तक लिखने का प्रयास नहीं करना चाहिए, क्योंकि मैं टेलीपैथिक रूप से विचारों को अवशोषित नहीं करने जा रहा हूं।


134
मावेन को समझने वालों के लिए, कोई स्पष्टीकरण आवश्यक नहीं है। जो नहीं करते हैं, उनके लिए कोई स्पष्टीकरण संभव नहीं है।
Apocalisp

35
आपका एक बुलेट पॉइंट झूठा है। -o - ऑफ़लाइन मोड, इसलिए नहीं, यह आपकी निर्माण प्रक्रिया को आपके नेटवर्क कनेक्शन पर निर्भर नहीं करता है।
MetroidFan2002

10
मैं सर्व-या-कुछ बिंदु पर सहमत हूं। मैंने बहुत से लोगों को देखा है कि वे अपने प्रोजेक्ट पोर्टफोलियो का आधा हिस्सा चींटी और आधा मावेन में रखने की कोशिश कर रहे हैं। एक बार जब आप प्रतिबद्ध होते हैं, तो आपको अपनी तैनाती के हर हिस्से को बदलने के लिए काम करना होगा।
साल

14
@Apocalisp: तो, दूसरे शब्दों में, मावेन को समझने वाले एकमात्र लोग हैं जिन्होंने इसे लिखा है?
पॉवरलॉर्ड

5
मावेन सब-कुछ है। यह सच नहीं है। आप निर्भरता प्रबंधन के लिए मावेन का उपयोग कर सकते हैं और यदि आप चाहें तो कुछ और नहीं। यह सब लेता है एक उदाहरण है कि अपनी पॉम फ़ाइल को पढ़ने के लिए मावेन चींटी के कार्यों का उपयोग कैसे करें और अपने सभी आश्रितों को मिलाकर एक एएनटी क्लासपाथ बनाएं।
झेरिको 22

109
  • यह शुरू से ही आप पर कठोर संरचना थोपता है।
  • यह XML- आधारित है, इसलिए इसे पढ़ना उतना ही कठिन है जितना ANT था।
  • इसकी त्रुटि रिपोर्टिंग अस्पष्ट है और जब चीजें गलत हो जाती हैं तो आपको छोड़ दिया जाता है।
  • दस्तावेज खराब है।
  • यह कठिन चीजों को आसान और सरल चीजों को कठिन बनाता है।
  • मावेन बिल्ड वातावरण को बनाए रखने के लिए बहुत अधिक समय लगता है, जो एक ऑल-सिंगिंग बिल्ड सिस्टम होने की बात को पराजित करता है।
  • यह पता लगाने में लंबा समय लगता है कि आपने मावेन में एक बग पाया है और कुछ गलत नहीं कॉन्फ़िगर किया है। और बग मौजूद हैं, और आश्चर्यजनक स्थानों में।
  • यह बहुत वादा करता है लेकिन आपको एक सुंदर और मोहक लेकिन भावनात्मक रूप से ठंडा और जोड़ तोड़ प्रेमी की तरह धोखा देता है।

45
++ यह कठिन चीजों को आसान और सरल चीजों को कठिन बनाता है। यह बहुत सही है!
मार्टिन के।

8
"यह बहुत वादा करता है लेकिन एक सुंदर और मोहक लेकिन भावनात्मक रूप से ठंडा और जोड़ तोड़ प्रेमी की तरह आपको धोखा देता है।" हाहाहाहा ... कि "बॉल्स ऑफ फ्यूरी" से उस मास्टर फोंग की तरह बहुत कुछ लगता है
सीजर

8
रे बुलेट पॉइंट 2: यह लगभग हमेशा तत्वों का उपयोग करता है, विशेषताएँ लगभग कभी नहीं, इसलिए एक्सएमएल चींटी की तुलना में पढ़ने के लिए भी कठिन है!
कार्ल स्मोत्रिकज

4
अंतिम गोली के लिए +1। कुछ भी नहीं मेरा दिन एक भयानक और प्रफुल्लित करने वाला सादृश्य आ रहा है जैसे कि सच है।
एडम

1
प्रलेखन खराब नहीं है, यह उत्कृष्ट है।
एचडीवी १४'१४ 17:10

96

मैंने निश्चित रूप से अतीत में मावेन के बारे में कुतिया और विलाप किया है। लेकिन अब, मैं इसके बिना नहीं होगा। मुझे लगता है कि लाभ अब तक किसी भी समस्या को दूर करते हैं। मुख्यतः:

  • मानकीकृत परियोजना संरचना।
    • परियोजना में शामिल होने वाले नए डेवलपर को देखते हुए:
      • जब आप कहते हैं कि यह मावेन परियोजना है, तो डेवलपर परियोजना के लेआउट को जानता है और परियोजना का निर्माण और पैकेज कैसे करना है
      • जब आप कहते हैं कि यह एक चींटी परियोजना है, तो डेवलपर को आपको अधिक समझाने के लिए इंतजार करना होगा या चीजों को जानने के लिए build.xml से गुजरना होगा।
    • बेशक, चींटी के साथ कंपनी-व्यापी मानक को लागू करना हमेशा संभव होता है, लेकिन मुझे लगता है कि अधिक बार नहीं, आप लौकिक पहिया का फिर से आविष्कार करेंगे।
  • निर्भरता प्रबंधन।
    • न केवल बाहरी पुस्तकालयों के साथ, बल्कि आंतरिक पुस्तकालयों / मॉड्यूलों के साथ भी। Nexus या Artifactory जैसे Maven रिपॉजिटरी प्रॉक्सी सर्वर का उपयोग करना सुनिश्चित करें ।
    • आइवी के साथ ऐसा करना संभव है । वास्तव में, अगर आप की जरूरत है एक निर्भरता प्रबंधन है, तो आप शायद आइवी का उपयोग कर रहे हैं।
  • विशेष रूप से एक परियोजना के भीतर। मैंने पाया है कि यह थोड़ा सबप्रोजेक्ट को तोड़ने के लिए काफी उपयोगी है, और मावेन इसे अच्छी तरह से संभालता है। यह चींटी के साथ बहुत अधिक कठिन है।
  • मानकीकृत विरूपण साक्ष्य प्रबंधन (विशेषकर नेक्सस या आर्टिफैक्ट के साथ संयोजन के रूप में )
  • रिलीज-प्लगइन अद्भुत है।
  • ग्रहण और नेटबीन्स का एकीकरण काफी अच्छा है।
  • हडसन के साथ एकीकरण शानदार है। विशेष रूप से ट्रेंड ग्राफ़ जैसे चीज़ों के लिए खोजें।
  • यह एक मामूली बात है, लेकिन तथ्य यह है कि मावेन जार या युद्ध के अंदर संस्करण संख्या जैसे विवरणों को एम्बेड करता है (न कि केवल फ़ाइल नाम में) डिफ़ॉल्ट रूप से मददगार होता है।

मेरे लिए मुख्यतः निम्न हैं:

  • कमांड लाइन काफी अदम्य है। इसने मुझे शुरू करने के लिए बहुत दूर रखा।
  • XML फॉर्मेट बहुत ही वर्बोज़ है। मैं देख सकता हूं कि ऐसा क्यों किया गया था, लेकिन यह अभी भी पढ़ने के लिए एक दर्द है।
    • उस ने कहा, यह एक IDE में आसान संपादन के लिए एक XSD है।
  • शुरुआत में अपने सिर को गोल कर पाना मुश्किल है। उदाहरण के लिए, जीवनचक्र जैसी चीजें।

मैं वास्तव में विश्वास करता हूं कि मावेन को जानने में थोड़ा समय खर्च करने लायक है।


2
मुझे विशेष रूप से XML प्रारूप पर ध्यान नहीं है (ग्रहण अधिकांश थकाऊ भागों की देखभाल कर सकता है) और बड़ी परियोजनाओं के लिए निर्देश बनाना वैसे भी आमतौर पर बुरा और जटिल होता है। उदाहरण के लिए, आपने अपने सिर को ईंट की दीवार पर तब तक नहीं गिराया है जब तक कि आप कुछ ऐसा करने के लिए जीएनयू को स्वचालित करने की कोशिश नहीं करते हैं ...
डोनाल्ड फेलो

2
इंटेलीज को उत्कृष्ट मैवेन समर्थन भी है।
स्टीवन बेनिटेज़

1
ओह विवरण के साथ एक समझदार प्रतिक्रिया देखो।
टिम ओ'ब्रायन

80

दो बड़ी परियोजनाओं से मेरा व्यावहारिक अनुभव यह है कि हमने मावेन संबंधित समस्याओं पर प्रत्येक परियोजना के लिए 1000 - 1500 घंटे खर्च किए हैं, मावेन 1 से मावेन 2 तक जाने के 500 घंटे के प्रयास को छोड़कर।

तब से, मुझे कहना होगा कि मैं मावेन से बिल्कुल नफरत करता हूं। मैं इसके बारे में सोचते हुए निराश हो रहा हूं।

ग्रहण एकीकरण भयानक है। (उदाहरण के लिए हमें कोड जनरेशन की अंतहीन परेशानियाँ थीं, जहाँ ग्रहण उत्पन्न कोड के साथ सिंक हो गया, और पूरी तरह से पुनः की आवश्यकता थी, काफी बार। दोष मावेन और ग्रहण दोनों है, लेकिन ग्रहण मावेन की तुलना में अधिक उपयोगी है और एमएसीएस कहते हैं, इसलिए ग्रहण रहता है और मावेन को जाना पड़ता है।)

हमारे पास बहुत सारी निर्भरताएं थीं, और जैसा कि हमने खोजा था, वाक्यविन्यास त्रुटियां वास्तव में सार्वजनिक मावेन रिपॉजिटरी के लिए काफी बार की जाती हैं, जो आपके मूल्यवान समय के घंटों को बर्बाद कर सकती हैं। हर हफ्ते। वर्कअराउंड में प्रॉक्सी या स्थानीय रूप से संचालित रिपॉजिटरी होना आवश्यक है और इसे सही होने में भी कुछ समय लगता है।

मैवेन्स परियोजना संरचना वास्तव में ग्रहण के साथ विकास के लिए उपयुक्त नहीं है, और ग्रहण में निर्माण समय बढ़ता है।

कोड जनरेशन और सिंक समस्या का प्रभाव, हमें बार-बार खुरचनी से पुनर्निर्माण करना पड़ा, अपने कोड / संकलन / परीक्षण चक्र को एक अंतहीन संकलन / websurf / sleep / die / code-cycle से कम करते हुए, आपको 90 के दशक में वापस भेज रहा है और 40 मिनट का संकलन समय।

मावेन के लिए एकमात्र बहाना निर्भरता संकल्प है, लेकिन मैं ऐसा करना चाहूंगा कि एक बार में, हर निर्माण में नहीं।

सारांश में, Maven जहाँ तक KISS से के रूप में यह हो सकता है। और साथ ही, अधिवक्ता लोग ऐसे प्रकार के होते हैं जो अपने जन्मदिन पर अतिरिक्त मनाते हैं जब उनकी उम्र एक प्रमुख संख्या होती है। मुझे वोट करने के लिए स्वतंत्र महसूस करें :-)


3
मैं वास्तव में आप जो कहते हैं, उसमें से कुछ से सहमत हूं, हालांकि मुझे लगता है कि मुझे आखिरकार यह सही लगा। हालांकि आप जो चाहते हैं उसे पाने के लिए आप आइवी पर एक नज़र डाल सकते हैं, इसे अभी तक कोशिश नहीं की है लेकिन यह अधिक संरचित चींटी वातावरण में निर्भरता प्रबंधन लाने के लिए लगता है।
न्यूटोपियन

5
तो, क्या आपको मावेन का कोई अच्छा विकल्प मिला?
थिलो

4
ग्रहण एकीकरण अभी भी भयानक है। अप-टू-डेट प्लग-इन होने के बावजूद, प्लगइन-नियंत्रित मावेन कार्य हैं जो अस्पष्ट त्रुटि संदेशों के साथ विफल हो जाते हैं। सहकर्मी फिर मुझे एक कमांड शेल को छोड़ने और उसी कमांड को चलाने के लिए कहते हैं ... फिर यह रहस्यमय तरीके से काम करता है। ग्रहण एक परिपक्व वातावरण है, मावेन प्लगइन बहुत पीछे रह जाता है।
13:15 बजे कार्ल स्मोत्रिकज़

2
एक बुनियादी अंतर है कि मावेन और एक्लिप्स कैसे परिभाषित करते हैं कि एक परियोजना क्या है। मावेन में, एक परियोजना स्रोत कोड को व्यवस्थित करने का एक सुविधाजनक तरीका है। प्रारंभ में ग्रहण इसलिए बनाया गया था कि आप एक ही समय में एक या कुछ अधिक या कम असंबंधित परियोजनाओं पर काम करने में सक्षम थे। बाद में (हमेशा ध्वनि नहीं) आवश्यकताओं को आईबीएम को "मॉड्यूल" के रूप में परियोजनाओं के दुरुपयोग की ओर ले जाता है जो कि ग्रहण वास्तव में बल्कि खराब संभालती है। कई मामलों में, परिभाषाओं को रूपांतरित करने के लिए, मावेन परियोजनाओं को संभवतः स्रोत फ़ोल्डर को ग्रहण करने के लिए मैप किया जाना चाहिए। हालांकि, जैसा कि मावेन तेह चूसना है, परेशान क्यों है।
कार्ल

3
अरे! मैं इस तथ्य से रूबरू हूं कि अगली बार जब मैं एक प्रधान व्यक्ति होगा, तो उसकी उम्र 29 वर्ष होगी, और अगली पूर्ण घन आयु 64 वर्ष होगी, और मेरी अंतिम पूर्ण उम्र 32 वर्ष होगी ... लेकिन मैं सक्रिय रूप से मावेन की वकालत नहीं करता।
cwallenpoole

46

मावेन महान है। इसकी प्रतिष्ठा का कारण मेरी राय में, सीखने की अवस्था के साथ है। (जो मैं अंत में पाने के करीब हूं)

प्रलेखन थोड़ा कठिन है, क्योंकि यह समझ में आने से पहले ऐसा लगता है कि पाठ और नई चीजों को समझने के लिए बहुत कुछ है। मैं कहता हूं कि मावेन को और अधिक व्यापक रूप से प्रशंसा के लिए समय की आवश्यकता है।


6
यह कुछ हद तक सही हो सकता है, लेकिन मैंने पाया है कि ग्रहण के साथ मावेन एकीकरण का उपयोग करना वास्तव में लोगों के लिए सीखने की अवस्था को ट्रिम करने में मदद करता है। m2eclipse.codehaus.org
टेलर लेसे

2
@ टेलर, मुझे प्लग-इन के साथ बहुत सारी समस्याएं थीं, खासकर अगर आप ग्रहण या स्वर्ग के कुछ अन्य संस्करण का उपयोग रेड से मना करते हैं। मुझे लगता है कि वहाँ हो रही है, फिर भी ...
दान

मैंने केवल इसे ग्रहण 3.3, 3.4 और जेबॉस डेवलपर स्टूडियो के साथ उपयोग किया है और सहमति व्यक्त की है कि कुछ छोटी-मोटी झुंझलाहट हैं (जैसे पीओएम संपादक अच्छा नहीं खेल रहा है) लेकिन मेरे पास कोई बड़ा मुद्दा नहीं है।
टेलर लेसे

10
यह सीखने की अवस्था नहीं है जो मुझे परेशान करती है। यह वास्तव में समझना मुश्किल नहीं है। मेरी समस्या यह है कि बड़ी (वाणिज्यिक) परियोजनाओं के लिए, आपको खर्च किए गए प्रयास की तुलना में बहुत कम मूल्य मिलता है। ठीक है, आपकी परियोजनाएँ बनती हैं। कूल, लेकिन एक आदमी वर्ष की लागत, बाहरी कारकों के कारण लगातार निर्माण विफलताओं, 5 सेकंड के बजाय 10 मिनट संकलन और एक बदसूरत ग्रहण कार्यक्षेत्र, यह सिर्फ इसके लायक नहीं है। इसके अलावा, एक ही लागत के लिए, आप कम या ज्यादा एक आदमी को किराए पर ले सकते हैं जो लगातार ट्रंक का निर्माण कर रहा है।
कार्ल

8
@ कर्लप - ठीक है, आप इसे अभी तक पूरी तरह से नहीं समझ पाए हैं ... 1.) "बाहरी कारकों के कारण विफलताएं" - आपको एक प्रोजेक्ट रिपॉजिटरी बनानी चाहिए, जिसमें आप अपनी सभी निर्भरताएँ बनाए रखें, और यह कि आप संस्करणों को नियंत्रित करते हैं। 2.) "5 मिनट के बजाय 10 मिनट के संकलन" - शायद प्रारंभिक मावेन स्थापित करने और पहले निर्माण के लिए - मावेन सभी निर्भरताओं को डाउनलोड करता है, इसके लिए आपकी परियोजना की आवश्यकता है - लेकिन नियमित रूप से आप अपने स्वयं के कोड का निर्माण करने का प्रयास नहीं करना चाहिए। डाउनलोड होना - 1 - यह भी देखें, ऑफ़लाइन मोड। 3.) "बदसूरत ग्रहण कार्यक्षेत्र" - मावेन सभी प्रमुख IDE (NB, IntelliJ) और कमांड लाइन से काम करता है।
नैट

24

क्योंकि मावेन बड़े लोगों को पूर्ण आतंक की भीड़ को कम करने के लिए एक उपकरण है।


3
हमें इसे बड़े पैमाने पर लाभ के लिए बड़े पैमाने पर उत्पादन करना चाहिए और इसे सभी खलनायकों को बेचना चाहिए!
जोआचिम सॉयर

7
नहीं! लाभ के लिए मावेन का उपयोग नहीं किया जा सकता है। इसका उपयोग केवल बुराई के लिए किया जा सकता है।
Apocalisp

18

पेशेवरों:

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

विपक्ष:

  • मावेन सीखने में निवेश करना होगा। खैर, यह करना है। अच्छी खबर है, टीम के सभी लोगों को नहीं सीखना है।
  • प्रलेखन। एक समस्या हुआ करती थी, अब सोनाटाइप और उनकी पुस्तक ( http://www.sonatype.com/products/maven/documentation/book-defguide ) के लिए धन्यवाद , स्थिति बहुत बेहतर है।
  • Rigidness। यह कभी-कभी चुनौतीपूर्ण और निराशाजनक होता है, जिस तरह से आप चाहते हैं। मेरी सलाह होगी कि मावेन को ऐसी चीजें बनाने और बनाने के लिए नहीं करना चाहिए जो यह सबसे अच्छा, सीधा बनाता है, या जब एक स्थिर फ़ूज उपलब्ध हो। अन्य मामलों में, हम ड्रॉप आउट करते हैं और या तो चींटी कार्यों ( http://maven.apache.org/plugins/maven-antrun-plugin/ ) के साथ सामान करते हैं। मेरा व्यक्तिगत पसंदीदा ग्रूवी प्लगुन ( http://groovy.codehaus.org/GMaven ) है।

प्रतियोगिता:

  • चींटी: निर्भरता प्रबंधन नहीं है। अवधि।
  • आइवी: मावेन की तुलना में अभी भी कम परिपक्व नहीं है (ऐसा नहीं है कि बाद में यह quirks भी नहीं है)। लगभग एक ही सुविधा सेट, इसलिए स्थानांतरित करने के लिए कोई सम्मोहक कारण नहीं। मैंने इसे आज़माने के कई प्रयास किए; सभी असफल।

नीचे पंक्ति: हमारी सभी परियोजनाएं मावेन के साथ कई वर्षों से पहले से ही कर रही हैं।


3
चींटी मावेन के साथ प्रतिस्पर्धा नहीं करती है। आइवी मावेन के साथ प्रतिस्पर्धा नहीं करता है (यह मावेन चींटी कार्यों के साथ प्रतिस्पर्धा करता है)। मावेन एक बिल्ड टूल + निर्भरता प्रबंधन से अधिक है। अवधि।
पास्कल थिवेंट

18

मुझे लगता है कि यह उन लोगों के साथ एक खराब प्रतिष्ठा है जिनके पास सबसे सरल और सबसे जटिल परियोजनाएं हैं।

यदि आप एक सिंगल कोडबेस से सिंगल WAR का निर्माण कर रहे हैं, तो यह आपको अपनी परियोजना संरचना को चारों ओर ले जाने के लिए बाध्य करता है और POM फ़ाइल में दो तीन जार को मैन्युअल रूप से सूचीबद्ध करता है।

यदि आप पांच निर्माणाधीन फ़ाइलों, तीन EJB और 17 अन्य उपकरणों, निर्भरता जार और कॉन्फ़िगरेशन के कुछ संयोजन के साथ नौ EAR फ़ाइल प्रोटोटाइप के सेट से एक EAR का निर्माण कर रहे हैं, जो अंतिम निर्माण के दौरान मौजूदा संसाधनों में MANIFEST.MF और XML फ़ाइलों की आवश्यकता होती है; तब मावेन भी प्रतिबंधित होने की संभावना है। इस तरह की परियोजना जटिल नेस्टेड प्रोफाइल, गुण फाइलों और मेवेन बिल्ड लक्ष्यों और क्लासिफायर पदनाम के दुरुपयोग की गड़बड़ी बन जाती है।

इसलिए यदि आप जटिलता वक्र के निचले 10% हिस्से में हैं, तो यह ओवरकिल है। उस वक्र के शीर्ष 10% पर, आप स्ट्रेटजैकेट में हैं।

मावेन की वृद्धि है क्योंकि यह मध्य 80% के लिए अच्छी तरह से काम करता है


16

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

मेरा अनुभव है कि रूट कैनाल के समान अनुभव में नेस्टेड xml फ़ाइलों के जाले के माध्यम से मावेन के साथ किसी भी समस्या को जल्दी से एक बहु-घंटे स्निप हंट में बदल दिया जाता है।

मैंने उन दुकानों में भी काम किया है जो मावेन पर बहुत अधिक निर्भर थे, जिन लोगों ने इसे पसंद किया (जिन्होंने "एक बटन को धक्का दिया, यह सब हो गया" पहलू) को समझ नहीं पाया। मावेन बिल्ड में एक लाख स्वचालित लक्ष्य थे, जो मुझे यकीन है कि उपयोगी होगा अगर मुझे लगता है कि उन्होंने जो कुछ किया है उसे पढ़ने के लिए घंटों का समय लगता है। बेहतर 2 लक्ष्य जो उस काम को करते हैं जिसे आप पूरी तरह से समझते हैं।

चेतावनी: अंतिम बार मावेन के साथ 2 साल पहले काम किया था, अब यह बेहतर हो सकता है।


14

ग्लेन की तरह, मुझे नहीं लगता कि मावेन का बुरा प्रतिनिधि है, लेकिन एक मिश्रित प्रतिनिधि है। मैं 6 महीने से विशेष रूप से मावेन के लिए एक बड़ी परियोजना परियोजना को स्थानांतरित करने की कोशिश कर रहा हूं और यह उपकरण की सीमाओं को स्पष्ट रूप से दिखाता है।

मेरे अनुभव में, मावेन के लिए अच्छा है:

  • बाहरी निर्भरता प्रबंधन
  • बिल्ड का केंद्रीयकृत प्रबंधन (पोम इनहेरिटेंस)
  • बहुत सारी चीजों के लिए बहुत सारे प्लगइन्स
  • निरंतर एकीकरण उपकरण के साथ बहुत अच्छा एकीकरण
  • बहुत अच्छी रिपोर्टिंग क्षमताएं (FindBugs, PMD, Checkstyle, Javadoc, ...)

और इसके साथ कुछ समस्याएं हैं:

  • सभी या कुछ भी नहीं (मावेन की ओर धीरे-धीरे पलायन करने के लिए कठिन)
  • जटिल निर्भरताएँ, इंटरमॉडल निर्भरताएँ
  • चक्रीय निर्भरता (मुझे पता है, खराब डिजाइन, लेकिन हम देव के 5 साल ठीक नहीं कर सकते ...)
  • जुटना (संस्करण रेंज हर जगह समान नहीं है)
  • बग (संस्करण श्रेणियों के साथ फिर से)
  • प्रतिलिपि प्रस्तुत करने योग्य बनाता है (जब तक कि आप सभी प्लगइन्स के संस्करणों की संख्या को ठीक नहीं करते हैं, आप सुनिश्चित नहीं कर सकते कि आपको 6 महीनों में एक ही बिल्ड मिलेगा)
  • प्रलेखन की कमी (मूल बातें मूल के लिए काफी अच्छी है, लेकिन बड़ी परियोजनाओं को कैसे संभालना है, इसके कई उदाहरण नहीं हैं)

कुछ संदर्भ देने के लिए, इस परियोजना पर लगभग 30 डेवलपर्स काम कर रहे हैं, और यह परियोजना लगभग 5 वर्षों से अधिक समय से है, इसलिए: बहुत सारी विरासत, बहुत सारी प्रक्रिया पहले से ही, बहुत सारे कस्टम मालिकाना उपकरण पहले से ही। हमने मावेन की ओर पलायन करने की कोशिश करने का फैसला किया क्योंकि हमारे मालिकाना उपकरणों को बनाए रखने की लागत बहुत अधिक हो रही थी।


12

मैं इस मंच में की गई कुछ शिकायतों का सामना करना चाहता हूँ:

मावेन सब-कुछ है। या कम से कम जहाँ तक मैं प्रलेखन से बता सकता था। आप आसानी से चींटी के बदले ड्रॉप-इन प्रतिस्थापन के रूप में मावेन का उपयोग नहीं कर सकते हैं, और धीरे-धीरे अधिक उन्नत सुविधाओं को अपना सकते हैं।

यह सच नहीं है। मावेन की बड़ी जीत तर्कसंगत तरीके से अपनी निर्भरता को प्रबंधित करने के लिए इसका उपयोग कर रही है और यदि आप मावेन में ऐसा करना चाहते हैं और बाकी सब चीजो में कर सकते हैं, तो आप कर सकते हैं। ऐसे:

<?xml version="1.0" encoding="UTF-8"?>
<project name="foo" basedir="." xmlns:maven="antlib:org.apache.maven.artifact.ant" >
  <maven:dependencies verbose="true" pathId="maven.classpath">
    <maven:pom id="maven.pom" file="pom.xml" />
  </maven:dependencies>
</project>

अब आपके पास 'maven.classpath' नाम का एक क्लासपैथ ऑब्जेक्ट है, जिसमें pom फ़ाइल में परिभाषित सभी मावेन निर्भरताएँ हैं। आप सभी की जरूरत है कि मावेन चींटी कार्य जार को अपनी चींटी के लिबास में डाल दें।

मावेन आपके निर्माण की प्रक्रिया को आपके नेटवर्क कनेक्शन पर निर्भर करता है।

डिफ़ॉल्ट निर्भरता और प्लगइन लाने की प्रक्रिया एक नेटवर्क कनेक्शन पर निर्भर करती है, हां, लेकिन केवल शुरुआती बिल्ड के लिए (या यदि आप उपयोग में निर्भरता या प्लगइन्स को बदलते हैं)। उसके बाद सभी जार स्थानीय रूप से कैश किए जाते हैं। और यदि आप नो-नेटवर्क कनेक्शन को बाध्य करना चाहते हैं, तो आप मावेन को ऑफ़लाइन मोड का उपयोग करने के लिए कह सकते हैं।

यह शुरू से ही आप पर कठोर संरचना थोपता है।

यह स्पष्ट नहीं है अगर यह फ़ाइल प्रारूप या 'कन्वेंशन बनाम कॉन्फ़िगरेशन' समस्या की बात कर रहा है। उत्तरार्द्ध के लिए, जावा स्रोत फ़ाइलों और संसाधनों की अपेक्षित स्थान या स्रोत की अनुकूलता जैसे कई अदृश्य चूक हैं। लेकिन यह कठोरता नहीं है, यह आपके लिए समझदार चूक में डाल रहा है ताकि आपको उन्हें स्पष्ट रूप से परिभाषित न करना पड़े। सभी सेटिंग्स को बहुत आसानी से ओवरराइड किया जा सकता है (हालांकि शुरुआत के लिए यह मुश्किल हो सकता है कि प्रलेखन में कुछ चीजों को कैसे बदला जाए)।

यदि आप फ़ाइल प्रारूप के बारे में बात कर रहे हैं, तो अगले भाग के जवाब में अच्छी तरह से कवर किया गया है ...

यह XML- आधारित है, इसलिए इसे पढ़ना उतना ही कठिन है जितना ANT था।

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

यह कहते हुए कि कुछ शिकायतें हैं जो मैंने यहां देखी हैं, जिनमें कुछ खराबी है, सबसे बड़ी है

  • प्रलेखन खराब / गायब है
  • मरम्मत करने योग्य बनाता है
  • ग्रहण का एकीकरण खराब है
  • कीड़े

जिसको लेकर मेरी प्रतिक्रिया दुगनी है। सबसे पहले, मावेन चींटी या मेक की तुलना में बहुत छोटा उपकरण है, इसलिए आपको यह उम्मीद करनी होगी कि इसका समय उन अनुप्रयोगों की परिपक्वता स्तर तक पहुंचने में समय लगेगा। दूसरी बात, अगर आपको यह पसंद नहीं है, तो इसे ठीक करें । इसका एक ओपन सोर्स प्रोजेक्ट है और इसका उपयोग करना और फिर किसी ऐसी चीज़ के बारे में शिकायत करना जिसे सुलझाने में किसी का भी हाथ हो सकता है, मुझे काफी असिन लगती है। प्रलेखन पसंद नहीं है? इसे स्पष्ट करने के लिए योगदान करें, शुरुआती से अधिक पूर्ण या अधिक सुलभ।

Reproducible समस्या दो मुद्दों, संस्करण श्रेणियों और स्वचालित मावेन प्लगइन अपडेट में टूट जाती है। प्लग-अप के लिए, अच्छी तरह से जब तक आप यह सुनिश्चित नहीं कर रहे हैं कि जब आप एक साल बाद किसी प्रोजेक्ट का पुनर्निर्माण करते हैं, तो आप बिल्कुल उसी जेडीके और सटीक एंट एंट संस्करण का उपयोग कर रहे हों, तो यह एक अलग नाम के साथ सिर्फ एक ही समस्या है। संस्करण श्रेणियों के लिए, मैं एक ऐसे प्लगइन पर काम करने की सलाह देता हूं जो सभी प्रत्यक्ष और सकर्मक निर्भरताओं के लिए लॉक किए गए संस्करणों के साथ एक अस्थायी पोम का उत्पादन करेगा और इसे मावेन रिलीज जीवनचक्र का हिस्सा बना देगा। इस तरह से आपकी रिलीज़ बिल्ड पॉम्स हमेशा सभी निर्भरताओं का सटीक वर्णन करती हैं।


11

यह उस प्रतिष्ठा की हकदार है जो इसे मिली है। हर किसी को कठोर संरचना की आवश्यकता नहीं है जो मावेन के डेवलपर्स ने सोचा कि यह हर एक परियोजना के लिए उपयुक्त है। यह कितना अनम्य है। और कई लोगों के लिए ency प्रो ’क्या है, निर्भरता प्रबंधन, आईएमएचओ इसका सबसे बड़ा। कॉन’ है। मैं नेटवर्क से जार डाउनलोड करने वाले मावेन के साथ बिल्कुल सहज नहीं हूं और असंगतताओं पर अपनी नींद खो देता हूं (हाँ, ऑफ़लाइन मोड मौजूद है, लेकिन फिर मुझे उन सभी सैकड़ों xml फाइलें और चेकसम क्यों चाहिए)। मैं तय करता हूं कि मैं किन पुस्तकालयों का उपयोग करता हूं और कई परियोजनाओं में नेटवर्क कनेक्शन पर निर्भर बिल्ड के बारे में गंभीर चिंताएं हैं।

इससे भी बदतर, जब चीजें काम नहीं करती हैं, तो आप बिल्कुल खो जाते हैं। प्रलेखन बेकार है, समुदाय अव्यवस्थित है।


4
मैं इससे सहमत हु। मुझे लगता है कि निर्भरता-प्रबंधन का मूल्य अतिरंजित है। यकीन है कि यह साफ है जब यह सब काम करता है, लेकिन यह कई संभावित विफलता बिंदुओं का परिचय देता है (संभावित सुरक्षा छेदों का उल्लेख नहीं करना)। आप कुछ समस्याओं को कम करने के लिए अपने स्वयं के रिपॉजिटरी सर्वर को सेटअप कर सकते हैं, और अप्रत्याशित अपडेट से बचने के लिए संस्करण संख्याओं को लॉक कर सकते हैं, लेकिन मैं अभी भी संस्करण नियंत्रण पर निर्भरता जोड़ना पसंद करता हूं क्योंकि वे अक्सर बदलते नहीं हैं और यह एक दोहराने योग्य बिल्ड की गारंटी देता है ।
डैन डायर

8

एक साल बाद मैं इसे अपडेट करना चाहता था: मावेन समुदाय के बारे में मेरी अब यह राय नहीं है। अगर यह सवाल आज पूछा जाता तो मैं यह जवाब नहीं लिखता। मैं एक अलग उत्तर के रूप में अपनी वर्तमान राय जोड़ने जा रहा हूं।


यह एक बहुत ही व्यक्तिपरक उत्तर है, लेकिन सवाल राय के बारे में है, इसलिए ...

मैं मावेन को पसंद करता हूं, और मैं इसे जानना पसंद कर रहा हूं। हालांकि, इसके बारे में मेरी भावनाओं को प्रभावित करने वाली एक चीज़: मावेन समुदाय मुख्य रूप से सोनाटाइप ("मावेन कंपनी" के आसपास केंद्रित है, यह वह जगह है जहाँ कई मावेन होनचोस काम कर रहे हैं), और सोनटाइप समुदाय पर अपने कॉर्पोरेट उत्पादों को आक्रामक रूप से आगे बढ़ा रहा है।

एक उदाहरण: "मावेन बुक" ट्विटर स्ट्रीम रिपॉजिटरी प्रबंधन के लिए एक निश्चित परिचय से जोड़ता है ।

क्षमा करें, लेकिन "इंट्रो" नेक्सस के लिए आधी जानकारी, आधी बिक्री की पिच है। पॉप क्विज: क्या नेक्सस और नेक्सस प्रो के अलावा कोई अन्य रेपो मैनेजर हैं? इसके अलावा, माना जाता है कि खुले में खट्टा मावेन बुक के साथ क्या करना है? ओह, ठीक है, रिपॉजिटरी प्रबंधन पर अध्याय नेक्सस के बारे में एक अलग किताब ... में प्रकाशित किया गया है। हुह। यदि मैं मावेन पुस्तक में योगदान देता हूं, तो क्या मैं नेक्सस की बिक्री में वृद्धि का कारण बनता हूं?

कल्पना करें कि क्या आप एक जावा विकास मंच में भाग ले रहे थे और यह स्पष्ट था कि जावा पर चर्चा करने वाले सूर्य कर्मचारी नेटबीन्स और "नेटबीन्स प्रो" के बारे में बात करने के लिए हर संभव अवसर को जब्त करने जा रहे थे। थोड़ी देर के बाद, यह अपने समुदाय की भावना को खो देता है। मुझे चींटी के साथ ऐसा अनुभव कभी नहीं हुआ।

उस सब के बाद, मुझे लगता है कि मावेन एक बहुत ही रोचक और उपयोगी प्रणाली है (मैं इसे एक उपकरण नहीं कह रहा हूं, जैसे कि एंट, मावेन सॉफ्टवेयर विकास कॉन्फ़िगरेशन और निर्माण प्रबंधन के लिए व्यापक है)। निर्भरता प्रबंधन कई बार एक आशीर्वाद और अभिशाप है, लेकिन यह ताज़ा है - और निश्चित रूप से एकमात्र लाभ मावेन प्रदान नहीं करता है। मैं शायद सोनाटाइप शिलिंग के लिए बहुत दृढ़ता से थोड़ा प्रतिक्रिया कर रहा हूं, लेकिन यह मेरी राय में एसोसिएशन द्वारा मावेन को चोट पहुंचाता है। मुझे नहीं पता कि यह राय किसी और ने साझा की है या नहीं।


2
Zac, तुम्हें पता है कि मैं सोच रहा था कि क्या आप नेक्सस प्रोफेशनल के बारे में अधिक जानना चाहते हैं। :-)
टिम ओ'ब्रायन

7

मुझे लगता है कि मावेन को एक बुरा रैप मिलता है क्योंकि यह आपके प्रोजेक्ट पर संरचना को लागू करता है, जबकि चींटी जैसे अन्य उपकरण आपको किसी भी तरह से संरचना को पूरी तरह से परिभाषित करने की अनुमति देते हैं। सहमत भी है कि प्रलेखन खराब है, लेकिन मुझे लगता है कि मुख्य रूप से खराब रेप है जो मावेन को मिलता है क्योंकि लोग चींटी के लिए उपयोग किए जाते हैं।


2
मैं सहमत हूं कि शुरू में लोग चींटी के साथ अपने नियंत्रण को याद कर सकते हैं, लेकिन एक बार एक परियोजना उन सम्मेलनों को स्वीकार करने के लिए आती है जो मावेन लगाता है कि वे वास्तव में इससे उत्पादकता में लाभ देखेंगे।
टेलर लेसे

5
सच नहीं है, मावेन आपको परियोजना संरचना को बदलने की अनुमति देता है, यह सिर्फ एक संरचना का सुझाव देता है जो व्यापक रूप से उपयोग किया जाता है।
adrian.tarau

3
मुझे नहीं लगता कि यह सच है। मावेन के बारे में अधिकांश शिकायतें उन तरीकों के बारे में हैं जिनमें यह विफल हो सकता है कि यह कितना धीमा है या प्रलेखन है। मैंने वास्तव में किसी को भी संरचना के बारे में शिकायत करने पर ध्यान नहीं दिया है।
डैन डायर

@ डान डायर: मैं दूसरा। संरचना वास्तव में कुछ अच्छी चीजों में से एक है जो मावेन करती है। यह सब कुछ है जो मावेन को इतना भयानक बनाता है।
कार्ल स्मोत्रिकज़

6

बहुत जादू है।


3
अधिक विशिष्ट बनें - इसके बारे में इतना जादुई क्या है कि इसे प्रलेखित नहीं किया गया है?
व्हेल

4
यह जादुई है जैसे ही आपको यह जानने के लिए 2 घंटे के दौरान वेब पर खोजना होगा कि कुछ अपेक्षा के अनुरूप काम क्यों नहीं करता है। यदि आप एक विशिष्ट छूट चाहते हैं: मेरे प्लगइन को निष्पादित क्यों नहीं किया जाता है? आपके पास 2 घंटे हैं।
डेमियन बी

दरअसल, जब भी मैं ऐसा कुछ भी कर रहा हूं जिसमें 2 घंटे तक वेब खोजना शामिल नहीं है, मुझे संदेह होने लगता है कि मैं नौकरी के लिए गलत टूल का उपयोग कर रहा हूं या मैंने गलत तरीके से समझा / आवश्यकताओं को समझा है।
डग मॉस्कोप

6

क्योंकि असंतुष्ट लोग शिकायत करते हैं जबकि संतुष्ट लोग यह नहीं कहते कि वे संतुष्ट हैं। मेरा कहना है कि असंतुष्ट की तुलना में कहीं अधिक संतुष्ट मावेन उपयोगकर्ता हैं लेकिन बाद में अधिक शोर करते हैं। यह वास्तव में वास्तविक जीवन (आईएसपी, फोन वाहक, परिवहन, आदि) से एक सामान्य पैटर्न है।


5

मेरे लिए सबसे महत्वपूर्ण मुद्दा यह है कि मावेन, जब ठीक से कॉन्फ़िगर नहीं किया जाता है, तो पुन: प्रयोज्य बिल्ड का उत्पादन नहीं हो सकता है:

  • अविश्वसनीय रिमोट रिपॉजिटरी;
  • SNAPSHOT संस्करणों या कोई संस्करणों के साथ प्लगइन्स और पुस्तकालयों पर निर्भरता।

एक कंट बिल्ड के साथ इसका विरोध करें - हालांकि वर्बोज़ और थकाऊ IMO - सभी जारों की स्थानीय स्तर पर जाँच के बाद से काम करता है।

अच्छी बात यह है कि समस्याओं का समाधान किया जा सकता है:

  • अपने स्वयं के मावेन भंडार का उपयोग करें, जो मृत सरल हो गया है, मैं आर्चीवा का उपयोग कर रहा हूं अच्छे परिणामों के साथ ;
  • हमेशा अपनी निर्भरता को ठीक से संस्करणित करें। मावेन ने सुपर-पीओएम में 2.0.8 या 2.0.9 के साथ प्लगइन संस्करणों को बंद करना शुरू कर दिया है और आपकी सभी निर्भरताएं जारी किए गए संस्करणों के लिए होनी चाहिए।

वैकल्पिक रिपॉजिटरी कार्यान्वयन से जोड़ने के लिए +1।
डोनाल्ड फेलो

5

महान विचार - खराब कार्यान्वयन।

मैंने हाल ही में चींटी से मावेन के लिए एक परियोजना को स्थानांतरित किया। यह अंत में अच्छी तरह से काम किया, लेकिन मुझे एक ही पोम में दो अलग-अलग संस्करणों मावेन-असेंबली-प्लगइन और मावेन-जार-प्लगइन का उपयोग करना पड़ा (दो प्रोफाइल मिला) क्योंकि एक संस्करण में काम करने वाले दूसरे में टूट गया था।

इसलिए यह काफी सिरदर्द था। प्रलेखन हमेशा महान नहीं होता है, लेकिन मुझे यह स्वीकार करना चाहिए कि यह Google उत्तरों के लिए अपेक्षाकृत आसान था।

सुनिश्चित करें कि आप हमेशा आपके द्वारा उपयोग किए जाने वाले प्लगिंग के संस्करण निर्दिष्ट करते हैं। उम्मीद न करें कि नया संस्करण पीछे की ओर संगत होगा।

मुझे लगता है कि विवाद इस तथ्य से आता है कि मावेन अभी भी विकसित होता है और प्रक्रिया कभी-कभी दर्दनाक होती है।

सादर

वी।


मैं सहमत हूं कि विचार निष्पादन से बेहतर है। यह एक छोटा काम नहीं है जो उन्होंने अपनी रक्षा के लिए उठाया है, लेकिन मुझे नियमित रूप से आश्चर्य है कि क्या चीजें अधिक सरल तरीके से नहीं की जा सकती थीं।
इल्को

5

मुझे मावेन पसंद है। मैंने इसे 1.0 से पहले इस्तेमाल किया है। यह एक शक्तिशाली उपकरण है जिसने संतुलन पर मुझे काफी समय बचाया है, और मेरे विकास के बुनियादी ढांचे में सुधार किया है। लेकिन मैं कुछ लोगों की हताशा को समझ सकता हूं। मैं 3 प्रकार की हताशा देखता हूं:

  1. जहां कारण वास्तविक चिंताएं हैं (जैसे क्रिया POMs, प्रलेखन की कमी),
  2. कुछ गलत सूचना है (उदाहरण के लिए "आपके पास निर्माण करने के लिए इंटरनेट कनेक्शन होना चाहिए" - सच नहीं है - ऐसा नहीं किया जा सकता है,)
  3. इसमें से कुछ में मावेन पर वेंट किया गया है लेकिन वास्तव में कोई और दोषी है ("दूत को गोली मत चलाना")।

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

दूसरे मामले के लिए, मावेन जटिल है, और गलतफहमी आम है। यदि मैवेन 3 इस जटिलता (या यहां तक ​​कि कथित जटिलता) को संबोधित करने का एक तरीका खोज सकता है जो अच्छा होगा। मावेन काफी निवेश करता है, लेकिन, मेरे अनुभव में, निवेश जल्दी से अपने लिए भुगतान करता है।

अंतिम बिंदु के लिए, मुझे लगता है कि मावेन की सकारात्मक निर्भरता के बारे में पकड़ शायद सबसे अच्छा ज्ञात उदाहरण है।

सकर्मक निर्भरताएँ पुन: उपयोग में लाए जाने वाले वास्तविक सॉफ़्टवेयर की प्रकृति हैं। विंडोज डीएलएल, डेबियन पैकेज, जावा पैकेज, ओएसजी बंडल, यहां तक ​​कि सी ++ हेडर फाइल में सभी निर्भरताएं शामिल हैं और निर्भरता की समस्या है। यदि आपके पास दो निर्भरताएं हैं, और प्रत्येक एक ही चीज के एक अलग संस्करण का उपयोग करता है, तो आपको किसी भी तरह से हल करने का प्रयास करना होगा। मावेन निर्भरता की समस्या को हल करने की कोशिश नहीं करता है, बल्कि इसे सबसे आगे लाता है, और समस्या का प्रबंधन करने में मदद करने के लिए उपकरण प्रदान करता है, जैसे कि संघर्षों की रिपोर्टिंग और परियोजनाओं के पदानुक्रम के लिए लगातार निर्भरता प्रदान करने और वास्तव में पूर्ण नियंत्रण पर नियंत्रण। एक परियोजना की निर्भरताएँ।

प्रत्येक परियोजना के साथ निर्भरता सहित मैन्युअल रूप से दृष्टिकोण (एक पोस्टर कहता है कि वह स्रोत निर्भरता में सभी निर्भरता की जांच करता है) गलत निर्भरता का उपयोग करने का जोखिम चला रहा है, जैसे कि जब यह निर्भरता के लिए अद्यतनों में एक पुस्तकालय को अपडेट किए बिना अद्यतन किया जाता है, तो अनदेखा अपडेट। किसी भी आकार की परियोजना के लिए, निश्चित रूप से त्रुटियों के लिए नेतृत्व करने के लिए मैन्युअल रूप से निर्भरता का प्रबंधन किया जा रहा है। मावेन के साथ, आप अपने द्वारा उपयोग किए गए लाइब्रेरी संस्करण को अपडेट कर सकते हैं और सही निर्भरताएं शामिल हैं। परिवर्तन प्रबंधन के लिए, आप नए सेट के साथ निर्भरता के पुराने सेट (अपनी परियोजना के लिए समग्र रूप से) की तुलना कर सकते हैं, और किसी भी परिवर्तन की सावधानीपूर्वक जांच, परीक्षण आदि किया जा सकता है।

मावेन निर्भरता की समस्या का कारण नहीं है, लेकिन यह अधिक दिखाई देता है। निर्भरता के मुद्दों से निपटने में, मावेन किसी भी निर्भरता को "ट्विक्स" स्पष्ट करता है (आपके पीओएम पर निर्भरता को ओवरराइड करने के लिए एक बदलाव), इसके बजाय निहित है, जैसा कि संस्करण नियंत्रण में मैन्युअल रूप से प्रबंधित जार के साथ होता है, जहां जार बस मौजूद होते हैं, कुछ भी नहीं के साथ। समर्थन मौसम वे सही निर्भरता हैं या नहीं।


5

मेरा मानना ​​है कि मावेन का बुरा असर पड़ा है क्योंकि ज्यादातर अघोरियों ने मावेन + हडसन + सोनार के संयोजन का अवलोकन नहीं किया है । अगर उनके पास होता, तो वे पूछते कि "मैं कैसे शुरू करूँ"?


सोनार का उल्लेख करने के लिए +1।
डोनल फैलो

1
मैंने देखा है। मावेन का उपयोग करने के लिए अभी भी कोई कारण नहीं है। हडसन और सोनार को मावेन की जरूरत नहीं है।
rk2010

5

मावेन के साथ मेरे कुछ पालतू जानवर:

  • एक्सएमएल परिभाषा सुपर अनाड़ी और क्रिया है। क्या उन्होंने कभी विशेषताओं के बारे में नहीं सुना है?

  • अपने डिफ़ॉल्ट कॉन्फ़िगरेशन में, यह हमेशा 'हर ऑपरेशन पर नेट' को स्कैन करता है। भले ही यह किसी भी चीज के लिए उपयोगी हो, यह "स्वच्छ" के लिए इंटरनेट एक्सेस की आवश्यकता के लिए बेहद मूर्खतापूर्ण लगता है।

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

  • इस सभी नेटवर्क एक्सेस का समाधान -oविकल्प को जोड़कर इसे बंद करना है । लेकिन आपको इसे बंद करना याद रखना होगा यदि आप वास्तव में निर्भरता अपडेट करना चाहते हैं!

  • एक और उपाय निर्भरता के लिए अपने स्वयं के "स्रोत नियंत्रण" सर्वर को स्थापित करना है। आश्चर्य: ज्यादातर परियोजनाओं में पहले से ही स्रोत नियंत्रण होता है, केवल जो अतिरिक्त सेटअप के साथ काम करता है!

  • मावेन बिल्ड अविश्वसनीय रूप से धीमा हैं। नेटवर्क अपडेट के साथ फ़िडलिंग इसे कम कर देता है, लेकिन मैवेन बिल्ड अभी भी धीमा है। और बुरी तरह से क्रिया।

  • मावेन प्लगइन (M2Eclipse) ग्रहण के साथ सबसे खराब रूप से एकीकृत करता है। ग्रहण संस्करण नियंत्रण सॉफ्टवेयर और चींटी के साथ यथोचित रूप से सुचारू रूप से एकीकृत होता है। मावेन एकीकरण तुलनात्मक रूप से बहुत ही भद्दा और बदसूरत है। क्या मैंने धीमी गति का उल्लेख किया है?

  • मावेन बगिया बनी हुई है। त्रुटि संदेश अनपेक्षित हैं। बहुत सारे डेवलपर्स इससे पीड़ित हैं।


2
जब तक मैं एक स्नैपशॉट निर्भरता का उपयोग नहीं कर रहा था या कुछ आवश्यक नहीं था तब एक नई सुविधा जोड़ी जब तक मैंने मावेन को एक निर्भरता के नवीनतम बंद को नहीं खींच लिया। अगर मैं संस्करण 1.2.3 के लिए पूछता हूं, और मेरे स्थानीय भंडार में 1.2.3 है, तो मुझे 1.2.3 फिर से नहीं मिलता है।
माइक कॉर्नेल

1
आप अपने प्रत्यक्ष निर्भरता को नियंत्रित करते हैं, हाँ। आपकी निर्भरता की निर्भरता को कौन नियंत्रित करता है?
बजे कार्ल स्मोत्रिकज़ २२'१०

आप पहले बिंदु के लिए, विशेषताओं के बारे में, जिसे आगामी में संबोधित किया जाना चाहिए, (एक लंबे समय की तरह अब मैं मानता हूँ) मावेन 3.
mezmo

@mezmo: यह बहुत स्वागत होगा। जानकारी के लिए धन्यवाद!
कार्ल स्मोत्रिकज

4

अच्छा प्रश्न। मैंने अभी-अभी काम पर एक बड़ी परियोजना शुरू की है और पिछली परियोजनाओं का हिस्सा हमारे कोड-बेस में मॉड्यूलरिटी लागू करना था।

मैंने मावेन के बारे में बुरी बातें सुनी हैं। वास्तव में, यह सब मैंने कभी इसके बारे में सुना है। मैंने देखा कि हम वर्तमान में अनुभव कर रहे हैं निर्भरता दुःस्वप्न को हल करने के लिए इसे शुरू करने पर। मावेन के साथ मैंने जो समस्या देखी है, वह यह है कि यह संरचना में काफी कठोर है, अर्थात आपको इसके लिए अपने प्रोजेक्ट लेआउट के अनुरूप होना चाहिए।

मुझे पता है कि ज्यादातर लोग क्या कहेंगे - आपको संरचना के अनुरूप नहीं होना चाहिए। वास्तव में यह सच है, लेकिन आपको यह तब तक पता नहीं चलेगा जब तक आप प्रारंभिक सीखने की अवस्था में नहीं होते हैं, जिस बिंदु पर आपने बहुत अधिक समय निवेश किया है और इसे दूर फेंकने के लिए।

चींटी इन दिनों बहुत उपयोग की जाती है, और मुझे यह पसंद है। इस बात को ध्यान में रखते हुए मैं अपाचे आइवी नामक एक अल्पज्ञात निर्भरता प्रबंधक पर ठोकर खाई । Ivy चींटी में बहुत अच्छी तरह से एकीकृत है और यह बुनियादी जार पुनर्प्राप्ति सेटअप और काम करने के लिए त्वरित और आसान है। आइवी का एक और लाभ यह है कि यह बहुत शक्तिशाली है फिर भी काफी पारदर्शी है; आप बहुत आसानी से scp या ssh जैसे तंत्र का उपयोग करके बिल्ड ट्रांसफर कर सकते हैं; फाइलसिस्टम या दूरस्थ रिपॉजिटरी पर 'चेन' निर्भरता पुनर्प्राप्ति (मावेन रेपो संगतता इसकी लोकप्रिय विशेषताओं में से एक है)।

उस सभी ने कहा, मुझे अंत में उपयोग करने के लिए बहुत निराशा हुई - दस्तावेज़ीकरण बहुत कठिन है, लेकिन यह खराब अंग्रेजी में लिखा गया है जो डिबगिंग या गलत काम करने की कोशिश करने पर निराशा में जोड़ सकता है।

मैं इस परियोजना के दौरान कुछ बिंदु पर अपाचे आइवी को फिर से जारी करने जा रहा हूं और मुझे उम्मीद है कि यह ठीक से काम कर रहा है। एक काम जो हमने किया, वह यह था कि हम एक टीम के रूप में काम करने की अनुमति देते थे जो पुस्तकालयों पर निर्भर है और एक दस्तावेज वाली सूची मिलती है।

अंततः मुझे लगता है कि यह सब नीचे आता है कि आप एक व्यक्ति / टीम के रूप में कैसे काम करते हैं और आपको अपनी निर्भरता के मुद्दों को हल करने की आवश्यकता है।

आपको आइवी से संबंधित निम्नलिखित संसाधन मिल सकते हैं:


1
आइवी मावेन के साथ प्रतिस्पर्धा नहीं करता है (शायद मावेन एंट टास्क के साथ, लेकिन मावेन के साथ नहीं)।
पास्कल थिवेंट

1
आइवी मावेन एंट टास्क के साथ प्रतिस्पर्धा नहीं करता है, यह मावेन निर्भरता प्रबंधन के साथ प्रतिस्पर्धा करता है।
डेमियन बी

@atc ये सही था !! : "मुझे पता है कि अधिकांश लोग क्या कहेंगे - आपको संरचना के अनुरूप होने की ज़रूरत नहीं है। वास्तव में यह सच है, लेकिन आपको यह तब तक पता नहीं चलेगा जब तक आप प्रारंभिक सीखने की अवस्था से अधिक नहीं हो जाते हैं, जिस समय आपने बहुत अधिक निवेश किया है जाने के लिए और यह सब दूर फेंक।
rk2010

4

मुझे मावेन से प्यार है - यह उत्पादकता को बढ़ाता है, और मुझे बहुत खुशी है कि मैं अब चींटी (प्यासे) का उपयोग नहीं कर रहा हूं!

लेकिन अगर मैं चीजों को बदल सकता हूं तो यह होगा:

  1. मेक pom.xmlफ़ाइल कम वर्बोज़
  2. इसे शामिल करना आसान है।

1
मुझे लगता है कि मावेन उपयोगकर्ता आईडीई को स्थानीय रिपॉजिटरी में लापता या तीसरे पक्ष के जार आयात करने की अनुमति देकर बेहतर कार्य करेंगे। "पिक क्लिक इम्पोर्ट" डायलॉग बॉक्स लेना कितना कठिन होगा?
साल

@sal मेरा अनुमान है कि मेवेन पोर्टेबिलिटी को तोड़ने वाली प्रथा को बढ़ावा नहीं देना चाहता।
पास्कल थिवेंट

1
मैं इस तथ्य पर विचार करता हूं कि एक ताकत होने के लिए यादृच्छिक स्थानों से जार जोड़ना मुश्किल है। यदि आप टीम के माहौल में हैं, और आपको एक अजीब जार का उपयोग करने की आवश्यकता है, तो आपको उस जार को अपनी टीम के मावेन रेपो में तैनात करना चाहिए। इस तरह, बाकी टीम और आपके CI सर्वर एक ही बिल्ड का प्रदर्शन करेंगे। हर कोई उसी निर्माण को चलाता है जो मावेन दर्शन का एक आधार है।
ट्यूनार्च

जार चीज़ के लिए +1। अपने स्वयं के पूर्वनिर्मित जार को एक निर्माण में लाना (किसी भी कारण से) एक अस्वाभाविक दर्द है।
थोरबजोरन रावन एंडरसन

@tunaranch व्यक्तिगत रूप से मुझे पसंद है कि या तो सामान मावेन सेंट्रल में है या यह (जार और सभी) है जो संस्करण नियंत्रण से बाहर की जाँच की जा रही है। मूल रूप से मैं अपने git रिपॉजिटरी को USB- ड्राइव पर लाने में सक्षम होना चाहता हूं, इसे देखें, "mvan clean install" चलाएं और लंच पर जाएं और उठकर चलें।
थोरबजोरन राव एंडरसन

4

बहुत सारे कारण हैं कि लोग मावेन को पसंद नहीं करते हैं, लेकिन इसका सामना करते हैं कि वे बहुत व्यक्तिपरक हैं । मावेन आज कुछ अच्छी (और मुफ्त) किताबों, बेहतर डॉक्यूमेंटेशन, प्लगइन्स के बड़े सेट और रेफरेंशियल सक्सेसफुल प्रोजेक्ट बिल्ड में से बहुत कुछ वही मावेन नहीं है जैसा कि एक या दो साल पहले था।

मावेन को सरल परियोजनाओं में उपयोग करना बहुत आसान है, बड़े / जटिल लोगों के साथ मावन दर्शन के अधिक ज्ञान और गहन समझ की आवश्यकता है - शायद कंपनी स्तर में मावेन गुरु जैसे नेटवर्क व्यवस्थापक के लिए एक स्थिति है। मावेन की मूर्तियों से नफरत का मुख्य स्रोत अक्सर अज्ञानता है

मावेन के लिए एक और निगल में चींटी जैसे लचीलेपन की कमी है। लेकिन रिमेबर मावेन ने सम्मेलनों का सेट तैयार किया है - उनसे चिपकना भीख मांगने में कठिन लगता है, लेकिन अंत में अक्सर समस्याओं से बचा जाता है।

मावेन की वर्तमान सफलता इसकी कीमत साबित करती है। बेशक कोई भी पूर्ण नहीं है और मावेन के पास कुछ विपक्ष है और इसकी विचित्रता है, लेकिन मेरी राय में मावेन धीरे-धीरे अपने विरोधियों को मात देता है।


@Pascal। मावेन के साथ समस्याओं में एक
स्टैकओवरफ़्लो है

3

मैं यह नहीं कहूंगा कि यह एक बुरा प्रतिनिधि है क्योंकि इसमें एक मिश्रित प्रतिनिधि है। यदि आपकी परियोजना मावेन द्वारा वकालत किए गए "कॉन्फ़िगरेशन पर कन्वेंशन" प्रतिमान का अनुसरण करती है, तो आप इससे बहुत अधिक लाभ उठा सकते हैं। यदि आपकी परियोजना मावेन की दुनिया के दृष्टिकोण में अच्छी तरह से फिट नहीं है, तो यह एक बोझ बन सकता है।

उस अंत तक, यदि आपके पास परियोजना पर नियंत्रण है, तो मावेन जाने का रास्ता हो सकता है। लेकिन अगर आप नहीं करते हैं और लेआउट किसी के द्वारा नहीं तय किया गया है, जो मावेन का प्रशंसक नहीं है, तो यह इसके लायक होने से अधिक परेशानी हो सकती है। सबसे खुश मावेन परियोजनाएं शायद वही हैं जो मावेन परियोजनाओं के रूप में शुरू हुई थीं।


"मैं यह नहीं कहूंगा कि यह एक बुरा प्रतिनिधि है, क्योंकि इसमें एक मिश्रित प्रतिनिधि है" - मैं कहूंगा कि यह संभवतः अधिक सटीक है, केवल नकारात्मक राय अधिक बाहर रहना है।
दान

मैं मानता हूं कि किसी परियोजना को मावेन में पोर्ट करने से परियोजना के आकार के सापेक्ष प्रयोगात्मक रूप से कठिनाई होती है (आयात करने के लिए बड़ी परियोजना = कठिन आयात)। एक परियोजना शुरू करने के लिए मावेन का उपयोग करना मावेन का उपयोग करने का सबसे अच्छा तरीका है। और यह प्रयास के लायक नहीं हो सकता है।
लुइजिमैक्स

3

मेरे लिए, इन-हाउस परियोजनाओं के लिए मावेन बनाम चींटी का उपयोग करने के लिए विपक्ष के रूप में कई पेशेवरों हैं। हालांकि, ओपन सोर्स प्रोजेक्ट्स के लिए, मुझे लगता है कि कई परियोजनाओं को बनाने में मावेन का बहुत प्रभाव पड़ा है। यह बहुत पहले नहीं था कि संकलन करने के लिए औसत OSS जावा (चींटी आधारित) परियोजना को प्राप्त करने में घंटों लग गए, एक टन चर स्थापित करने, आश्रित परियोजनाओं को डाउनलोड करने, आदि।

आप मावेन के साथ कुछ भी कर सकते हैं जो आप चींटी के साथ कर सकते हैं, लेकिन जहां चींटी किसी भी मानक को प्रोत्साहित नहीं करती है, मावेन आपको दृढ़ता से सुझाव देता है कि यह संरचना का पालन करें, या यह अधिक काम होगा। सच है, कुछ चीजें मावेन के साथ स्थापित करने के लिए एक दर्द है जो चींटी के साथ करना आसान होगा, लेकिन अंतिम परिणाम लगभग हमेशा कुछ ऐसा होता है जो उन लोगों के दृष्टिकोण से बनाना आसान होता है जो केवल एक परियोजना की जांच करना चाहते हैं और जाना चाहते हैं।


3

यदि आप एक विकास परियोजना पर अपने व्यवसाय या नौकरी को दांव पर लगाने जा रहे हैं, तो आप नींव - यानी बिल्ड सिस्टम के नियंत्रण में रहना चाहते हैं। मावेन के साथ, आप नियंत्रण में नहीं हैं। यह घोषणात्मक और अपारदर्शी है। मावेन-फ्रेमवर्क डेवलपर्स को पता नहीं है कि पारदर्शी या सहज ज्ञान युक्त प्रणाली का निर्माण कैसे किया जाता है और यह लॉग आउटपुट और प्रलेखन से स्पष्ट है।

निर्भरता प्रबंधन बहुत लुभावना है क्योंकि यह आपको परियोजना के आरंभ में कुछ समय दे सकता है लेकिन चेतावनी दी जाती है, यह मौलिक रूप से टूट गया है और अंततः आपको बहुत अधिक सिरदर्द पैदा करेगा। जब दो आश्रितों में असंगत क्षणिक निर्भरता होती है, तो आप एक चूहे के घोंसले से अवरुद्ध हो जाएंगे, जो आपकी पूरी टीम के लिए निर्माण को तोड़ देगा और दिनों के लिए विकास को अवरुद्ध करेगा। मावेन के साथ निर्माण प्रक्रिया भी विभिन्न स्थानीय डेवलपर्स के लिए आपकी टीम के असंगत राज्यों के कारण असंगत रूप से असंगत है। इस बात पर निर्भर करता है कि किसी डेवलपर ने अपना वातावरण कब बनाया, या वे किन अन्य परियोजनाओं पर काम कर रहे हैं, उनके अलग-अलग परिणाम होंगे। आप पाएंगे कि आप अपनी संपूर्ण स्थानीय रिपॉजिटरी को हटा रहे हैं और डेव ब्रांच के लिए पहली बार सेटअप की तुलना में मावेन को फिर से डाउनलोड करने वाले जार को फिर से डाउनलोड कर रहे हैं। मेरा मानना ​​है कि OSGI एक पहल है जो इस मूलभूत समस्या को ठीक करने का प्रयास कर रही है। मैं कहूंगा कि शायद अगर किसी चीज को इतना जटिल होना चाहिए, तो मूल आधार गलत है।

मैं 5 साल से अधिक समय से एक मावेन उपयोगकर्ता / शिकार रहा हूं और मुझे कहना होगा कि यह आपके स्रोत भंडार में अपनी निर्भरता की जांच करने और अच्छे और सरल चींटी कार्यों को लिखने के लिए आपको अधिक समय बचाएगा। चींटी के साथ, आप वास्तव में जानते हैं कि आपका निर्माण तंत्र क्या कर रहा है।

मैंने मावेन समस्याओं के कारण कई अलग-अलग कंपनियों में कई, कई हारे हुए आदमी हफ्तों का अनुभव किया है।

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


3

संक्षिप्त उत्तर: मैंने मावेन बिल्ड सिस्टम को बनाए रखना बहुत मुश्किल पाया है, और मैं जितनी जल्दी हो सके ग्रैडल पर स्विच करना चाहूंगा।

मैं चार साल से मावेन के साथ काम कर रहा हूं। मैं खुद को बिल्ड सिस्टम पर एक विशेषज्ञ कहूंगा क्योंकि मैं जिस अंतिम (कम से कम) पांच कंपनियों में रहा हूं, मैंने बिल्ड / परिनियोजित बुनियादी ढांचे पर प्रमुख नवीकरण किया है।

कुछ सबक मैंने सीखा है:

  • अधिकांश डेवलपर्स बिल्ड सिस्टम के बारे में सोचने में बहुत समय खर्च नहीं करते हैं; नतीजतन, बिल्ड हैक की स्पैगेटी मेस में बदल जाता है, लेकिन वे उस समय की सराहना करते हैं जब उस मेस को साफ किया जाता है और तर्कसंगत बनाया जाता है।
  • जटिलता से निपटने में, मेरे पास एक पारदर्शी प्रणाली होगी जो एक से अधिक जटिलता (जैसे चींटी) को उजागर करती है जो मावेन की तरह कठोर प्रतिबंध लगाकर जटिल चीजों को सरल बनाने की कोशिश करती है। लिनक्स बनाम विंडोज के बारे में सोचो।
  • मावेन में कार्यक्षमता में बहुत सारे छेद हैं जिनके लिए बीजान्टिन वर्कअराउंड की आवश्यकता होती है। यह पीओएम फाइलों की ओर जाता है जो समझ से बाहर और अप्राप्य हैं।
  • चींटी सुपर-फ्लेक्सिबल और समझने योग्य है, लेकिन चींटी फाइलें बहुत बड़ी हो सकती हैं, क्योंकि यह इतना निम्न-स्तर है।
  • किसी भी महत्वपूर्ण परियोजना के लिए, डेवलपर्स को अपने स्वयं के निर्माण / तैनाती संरचना को बनाना होगा जो उपकरण प्रदान करता है; परियोजना के लिए संरचना की उपयुक्तता को बनाए रखना कितना आसान है, इसके लिए बहुत कुछ है। सबसे अच्छे उपकरण एक संरचना बनाने में आपका समर्थन करेंगे और आपसे लड़ेंगे नहीं।

मैंने ग्रैडल को थोड़ा सा देखा है और ऐसा लग रहा है कि इसमें दोनों दुनिया के सर्वश्रेष्ठ होने की संभावना है, यह घोषणात्मक और प्रक्रियात्मक निर्माण विवरण के मिश्रण की अनुमति देता है।


3

यह उस भाषा की तुलना में अधिक जटिल है जिसे आपने अपनी परियोजना के लिए लिखा था। इसे सही तरीके से कॉन्फ़िगर करना वास्तविक प्रोग्रामिंग की तुलना में कठिन है।


3

मैंने यहां बताए गए अधिकांश / सभी नकारात्मक के माध्यम से अपना रास्ता संघर्ष किया है, और टीम के साथियों से इसी तरह की आपत्तियों, और उन सभी के साथ सहमत हूं। लेकिन मैंने इसे रोक दिया है और एक उद्देश्य के लिए दृढ़ रहकर ऐसा करना जारी रखूंगा कि वास्तव में केवल मावेन (या ग्रेडेल शायद) ही वितरित करता है।

यदि आप साथियों (ओपन सोर्स डेवलपर्स ) के लिए अनुकूलित कर रहे हैं , तो चींटी / मेक / जो भी करेंगे। यदि आप गैर-साथियों ( उपयोगकर्ताओं ) को कार्यक्षमता प्रदान कर रहे हैं , तो केवल मावेन / ग्रेडल / आदि ही करेंगे।

केवल मावेन आपको एक अच्छी तरह से प्रलेखित मानक प्रोजेक्ट लेआउट के साथ स्रोत कोड + पोम्स (कोई एम्बेडेड लिब / बाइनरी निर्भरता जार के साथ गुप्त नाम और कोई निर्भरता जानकारी) का एक छोटा बंडल जारी करने की सुविधा देता है, जिसे किसी भी व्यक्ति द्वारा आईडीई द्वारा लोड नहीं किया जा सकता है। डेवलपर्स के idiosyncratic लेआउट सम्मेलनों। और एक-बटन इंस्टॉल करने की प्रक्रिया (mvan इंस्टॉल) है जो किसी भी लापता निर्भरता को प्राप्त करते समय सब कुछ बनाती है।

परिणाम एक आसान ऑन-रैंप है जो उपयोगकर्ता कोड में अपना रास्ता खोजने के लिए अनुसरण कर सकते हैं, जहां पॉम उन्हें प्रासंगिक प्रलेखन के लिए इंगित कर सकते हैं।

इसके अलावा (अपरिहार्य) आवश्यकता के अनुसार, मैं मावेन को उतना ही नापसंद करता हूं जितना किसी को।

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