मावेन सिद्धांत और व्यवहार में क्या करता है? यह कब उपयोग करने लायक है? [बन्द है]


156

मैं सिर्फ अभ्यास के लिए एक जावा परियोजना शुरू करने वाला हूं। मैंने मावेन के बारे में पढ़ा है, लेकिन मुझे वास्तव में समझ में नहीं आता है कि इसका उपयोग कब किया जाए।

क्या आप मुझे कुछ व्यावहारिक सुझाव दे सकते हैं? मावेन बहुत मदद करता है? मावेन वास्तव में मेरी परियोजना के लिए क्या करता है?


हेज, मावेन, वसंत और रो के बारे में मेरे इस सवाल पर एक नज़र है । मैंने ग्रहण के साथ काम करने और विकास के समय को गति देने के लिए मावेन का उपयोग किया। लेकिन कुछ मुद्दे हैं। मुझे लगता है कि आपको मावेन के साथ जावा एनोटेशन सिस्टम को समझने की आवश्यकता है। लेकिन मेरे द्वारा जुड़े प्रश्न पर एक नजर है ..
mm24

@ArtB मावेन क्या है की एक अच्छी व्याख्या देता है। हालाँकि, जैसा कि मैंने उनके जवाब में अपनी टिप्पणी में कहा, मुझे नहीं लगता कि आपको इसका उपयोग करना चाहिए। यदि आप बिल्ड टूल चाहते हैं, तो ग्रैडल का उपयोग करें। इसे डाउनलोड करें, इसे इंस्टॉल करें, फिर अपने प्रोजेक्ट में एक फाइल बनाएं build.gradle, जिसमें सिर्फ एक पंक्ति हो apply plugin: 'java'। अपने स्रोत कोड को सामान्य स्थान ( src/main/java, इकाई परीक्षण src/test/java) में मानकर , आप अब कहकर अपने कोड का निर्माण, परीक्षण और पैकेज कर सकते हैं gradle build। आसान!
टॉम एंडरसन

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

जावा पर एनोटेशन के साथ मावेन के पास क्या है?
स्लेज

1
ग्रेड के लिए +1, न केवल यह जावा डेवलपर्स के लिए घर के करीब है, यह मावेन कलाकृतियों का पुन: उपयोग कर सकता है और यह गैर मानक मानक आसानी से stackoverflow.com/questions/1163173/- कर सकता है
कल्पेश सोनी

जवाबों:


183

यह क्या करता है

मावेन एक "निर्माण प्रबंधन उपकरण" है, यह परिभाषित करने के लिए है कि कैसे आपकी .javaफ़ाइलों को संकलित किया जाता है .class, जिन्हें .jar(या .warया .ear) फाइलों में पैक किया जाता है , (पूर्व / पोस्ट) उपकरण के साथ संसाधित किया जाता है, आपके प्रबंधन के लिए CLASSPATH, और अन्य सभी प्रकार के कार्यों की आवश्यकता होती है अपने प्रोजेक्ट का निर्माण करें। यह C / C ++ में Apache Ant या Gradle या Makefiles के समान है , लेकिन यह इसमें पूरी तरह से आत्म-निहित होने का प्रयास करता है कि आपको अन्य सामान्य कार्यों जैसे आवश्यक पुस्तकालयों को डाउनलोड और इंस्टॉल करना आदि द्वारा किसी भी अतिरिक्त टूल या स्क्रिप्ट की आवश्यकता नहीं है।

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

आपको इसका उपयोग क्यों करना चाहिए

मावेन के बारे में तीन बातें हैं जो बहुत अच्छी हैं।

  1. मावेन (आपके द्वारा कौन सा उपयोग कर रहे हैं, यह घोषित करने के बाद) उन सभी पुस्तकालयों को डाउनलोड करें जो आप उपयोग करते हैं और वे पुस्तकालय जो वे आपके द्वारा स्वचालित रूप से उपयोग करते हैं। यह बहुत अच्छा है, और बहुत सारे पुस्तकालयों से हास्यास्पद तरीके से निपटना आसान बनाता है। इससे आप "निर्भरता नरक" से बच सकते हैं । यह अपाचे एंट की आइवी के समान है ।

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

  3. मावेन के पास बहुत सारे अच्छे प्लग-इन हैं जिन्हें आप स्थापित कर सकते हैं जो कि कोबर्टुरा के साथ परीक्षण कवरेज को मापने के लिए JAXB का उपयोग करके एक XSD स्कीमा से जावा कक्षाएं उत्पन्न करने से कई नियमित कार्यों को संभालेंगे । बस उन्हें अपने साथ जोड़ें pom.xmlऔर वे उस सब कुछ के साथ एकीकृत करेंगे जो आप करना चाहते हैं।

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

कैसे शुरू करें

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

आपके द्वारा आरंभ करने के बाद, आप इस बारे में बेहतर समझ चाहते हैं कि उपकरण का उपयोग करने का इरादा कैसे है। उस के लिए " बेटर बिल्ड विद मावेन " यह समझने का सबसे गहन स्थान है कि यह कैसे काम करता है, हालांकि, " मावेन: द कम्प्लीट रेफरेंस " अधिक अद्यतित है। समझने के लिए पहले एक को पढ़ें, लेकिन फिर संदर्भ के लिए दूसरे का उपयोग करें।


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

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

4
मुझे नहीं लगता कि ग्रैड का उपयोग करने के लिए आपके पास A + डेवलपर होना चाहिए। मैं यह नहीं देखता कि मावेन को अपनाने वाला एक संगठन ग्रैडल क्यों नहीं अपना सकता। यह सही है कि ग्रैडल आपको पैर में खुद को गोली मारने देता है, उसी तरह से चींटी भी करती है, लेकिन एक तरह से मावेन काफी मेहनत करती है (और मेरे पास इसे साबित करने के लिए मेरे सहकर्मियों के शॉट फुट का संग्रह है); मावेन को लगभग असंभव बना देने वाली चीजों को करना संभव बनाने के लिए ट्रेडऑफ है।
टॉम एंडरसन

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

1
इसलिए यह जावा के लिए npm की तरह है
KJW

9

से Sonatype डॉक :

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

मैं सोनटाइप डॉक को देखने और मावेन की शक्ति को समझने के लिए उपलब्ध प्लगइन्स को देखने में कुछ समय बिताने की जोरदार सलाह देता हूं।

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


मैंने इसे डाउनवोट नहीं किया, लेकिन संभवत: डाउनवोटर्स ने मैवेन के अधिनायकवादी "प्रोजेक्ट मैनेजमेंट टूल" दर्शन के निहितार्थ के रूप में सोनाटाइप प्रचार से आपके उद्धरण को पढ़ा।
टॉम एंडरसन

1
मुझे नहीं लगता है कि आपने ओपी प्रश्न का उत्तर दिया है, इसके बजाय आपने सिर्फ मार्केटिंग स्पील पोस्ट किया है ... और यह कि "प्रोजेक्ट मैनेजमेंट" के बाद से ही स्पिक रिड्यूस होता है, मावेन की तुलना में यह बहुत अधिक है जो इसे भ्रमित करने में मदद करता है। IMHO।
स्लेज

2
@Brian क्षमा करें, अगर मेरी पिछली टिप्पणी लचकदार लग रही है, लेकिन मुझे इसे फिर से पढ़ने दें: मुझे लगता है कि आपकी टिप्पणी केवल मावेन को अच्छी तरह से समझाती है यदि आप पहले से ही समझते हैं कि मावेन क्या है, लेकिन प्रारंभिक शुरुआती बिंदु के रूप में यह उपयोगी नहीं है।
स्लेज

5

Mavenएक निर्माण उपकरण है। साथ ही Antया निर्माण के लिए उपकरण Gradleहैं Java
यदि आप जावा में एक नौसिखिया हैं, तो बस अपने आईडीई का उपयोग करके निर्माण करें क्योंकि Mavenइसमें सीखने की अवस्था है।


नेटबीन में मावेन के लिए आईडीई समर्थन बहुत अच्छा है, जिससे सीखने की अवस्था लगभग न के बराबर हो जाती है।
कप्तान जिराफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.