2012-09-23 21 views
8

मैं मैवेन का उल्लेख क्लोजर के बारे में लेख/ब्लॉग/प्रश्न/उत्तर की बहुत अधिक संख्या में आश्चर्यचकित हूं।क्या एमवीएम पर क्लोजर के लिए मेवेन अनिवार्य है?

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

क्या मैवेन एक आवश्यकता है जब आप क्लोजर ऐप बनाना चाहते हैं?

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

मुझे लगता है कि मेरा प्रश्न इस पर उबाल जाता है: क्या आप क्लोजर/जेवीएम दुनिया में कभी भी मैवेन का उपयोग किए बिना दूर हो सकते हैं, जैसे कि आप जावा डेस्कटॉप, वेबपैप्स और एंड्रॉइड ऐप्स दोनों को बिना किसी बिल्ड, टेस्ट, पैकेज और शिप कर सकते हैं मेवेन की जरूरत है?

उत्तर

14

संक्षिप्त उत्तर: नहीं। क्लोजर सिर्फ एक जार है और आप इसे किसी अन्य जावा लाइब्रेरी की तरह "कच्चे" के रूप में उपयोग कर सकते हैं।

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

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

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

+3

लीनिंगेन हुड के नीचे मेवेन का उपयोग करता है, और अधिकांश समय आपको यह जानने की ज़रूरत नहीं है कि वह वहां है। – Bill

+0

हाँ, लेकिन यह मानता है कि कलाकृतियों को एक मैवेन रेपो में हैं। –

+0

यही कारण है कि मैंने ज्यादातर समय कहा था। :-) इसके अलावा, बीटीडब्ल्यू, एक अपवर्त है। – Bill

6

उस मामले के लिए आपको मेवेन या लीनिंगन का उपयोग करने की ज़रूरत नहीं है। आप

java -jar clojure-1.3.0.jar 

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

leiningen उपयोग कर, और एक नया काम जहां हम एक बहुत अच्छी तरह से सेटअप Maven config है शुरू करने का एक परिणाम के रूप में, मैं पूरी तरह से मेरी धुन बदल दिया है; मैं अब लगता है Maven महान है, और अब तक चींटी, जो मैं एक लंबे समय के लिए उपयोग किया है करने के लिए इसे पसंद करते हैं।

विशेष रूप clojure साथ, leiningen के कुछ लाभ हैं:

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

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

4

"क्या मेवेन अनिवार्य है जब आप लीनिंगन का उपयोग करना चाहते हैं?"

leiningen उपयोग करता है और लपेटता Maven ताकि आप वास्तव में यह से बचने नहीं कर सकता है, हालांकि आप कभी भी किसी भी एक्सएमएल

4

Maven Clojure के लिए अनिवार्य नहीं है के रूप में दूसरों ठीक ही बताया है छूने की जरूरत नहीं है।

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

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

पीएस आप की तरह, मैं वास्तव में 5 साल पहले मेवेन के बिंदु को नहीं देखा था। तब मैंने इसे एक जाने दिया और देखा कि यह मेरे वर्कफ़्लो के लिए कितना शक्तिशाली हो सकता है। अब मैं एक कन्वर्ट हूं :-)

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^