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