2008-09-19 11 views
8

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

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

उत्तर

4

आपकी परियोजना मैवेन के लिए उपयुक्त परियोजना की तरह नहीं लगती है। ऐसा लगता है कि आपके पास एक कार्यशील विकास वातावरण है। एक और क्यों स्थापित करें? यह आपको बनाए रखने के लिए सिर्फ एक और प्रोजेक्ट फ़ाइल देगा जो अच्छे ओल 'DRY सिद्धांत को तोड़ देता है। तथ्य यह है कि ओ.एस.एस. परियोजनाओं का एक बहुत का उपयोग कर रहे हैं (या परिवर्तित करने) Maven और कुछ बंद स्रोत परियोजनाओं maven करने के लिए आगे बढ़ रहे हैं से

+0

मैं सहमत हूं, हालांकि यह मौजूदा पर्यावरण और मेवेन में विकसित एक के बीच मतभेदों को सीखने का एक अच्छा अवसर होगा। –

6

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

मैं पक्ष पर इसका उपयोग करने से BuildR से प्रभावित किया गया है। मैवेन की निर्भरता प्रणाली का लाभ उठाने के दौरान यह एएनटी की तरह लचीला है। इसके अलावा, यह ऊष्मायन में है, इसलिए यह किनारों के चारों ओर थोड़ा मोटा है।

+2

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

+1

@Spencer के: सम्मेलन एक अच्छा विचार है। मेवेन के साथ समस्या यह है कि यह मायोपिक और लचीला है। – sblundy

3

हम ठीक से करते हैं कि आप हमारी परियोजनाओं में क्या करते हैं, और हम मेवेन का उपयोग करते हैं। आप अपने प्रोजेक्ट को बनाने के लिए मानक लेआउट और तरीका रखने के लिए मेवेन का उपयोग करना चाहते हैं। आपको एसवीएन में उन सभी जार निर्भरताओं को कभी भी स्टोर नहीं करना होगा या उन्हें कहीं खास रखना होगा, मैवेन आपके लिए ऐसा करता है। मेवेन अन्य डेवलपर्स को आसानी से आपकी परियोजना को समझने के साधनों के रूप में भी कार्य करता है। एक बार जब आप इसे का उपयोग शुरू, तुम वापस कभी नहीं देखने के लिए :) चाहता हूँ

+0

क्या यह डीबी संचालित वेब एप्लिकेशन के लिए कुछ विशिष्ट है? उदाहरण के लिए, क्या यह डेटाबेस स्क्रिप्ट चलाने के लिए कुछ भी करता है, या अपाचे रीराइट नियम या कुछ भी अपडेट करता है। – bpapa

+0

हम डेटाबेस स्क्रिप्ट चलाने के लिए mbunit (http://www.dbunit.org/) के साथ मेवेन का उपयोग करते हैं (टेबल प्रारंभ करें, डीबी पॉप्युलेट करें)। मेवेन वास्तव में कुछ खास नहीं करता है, यह काम करता है जो काम करता है। – neu242

11

Maven IMO अपनी परियोजना के लिए एक अच्छा फिट होगा। मेवेन एक चारों ओर निर्माण और तैनाती प्रबंधन उपकरण है। यह सबसे बड़ी ताकत यह है कि यह कार्यशील रूप से तुलनीय चींटी फाइलों या शैल स्क्रिप्ट्स की तुलना में बनाए रखने के लिए महत्वपूर्ण स्वाद बनाता है।

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

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

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

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

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

8

मैवेन आप जो करना चाहते हैं उसके लिए ठीक होगा। सबसे निर्माण उपकरणों के विपरीत, Maven सम्मेलनों का उपयोग करता है बुद्धिमानी से (अच्छी तरह से, कम से कम कई अन्य लोगों की तुलना में बेहतर), और यह हर क्षेत्र आप का उल्लेख के लिए "प्लग इन" है:

ईकाई परीक्षण: maven surefire plugin

ग्रहण एकता: m2eclipse

परिनियोजित युद्ध फ़ाइल: WAR plugin और Deploy plugin

Maven भी बिलाव पर एकीकरण परीक्षणों में मदद कर सकता है (अगर आप कुछ है), जब से तुम, शुरू कर सकते हैं cargo plugin का उपयोग बंद या एक युद्ध की तैनाती। Maven the definitive guide

आशा है कि यह मदद करता है:

वैसे भी अगर आप अपने खाली समय में पढ़ने के लिए योजना बना रहे हैं, यहाँ एक नि: शुल्क पुस्तक (पीडीएफ प्रारूप) है!

+1

सोनाटाइप पुस्तक काफी अच्छी है, और यदि आप गंभीर मेवेन-इज़िंग कर रहे हैं तो इसे पढ़ना चाहिए। –

2

अलग, अपनी परियोजना जरूरी नहीं कि एक बहुत Maven का उपयोग करने से लाभ होता है।

हालांकि, अगर आप इसे खुले सोर्सिंग पर विचार करेंगे, तो आपके प्रोजेक्ट के उपयोगकर्ताओं को आपके प्रोजेक्ट मेवेन को रोजगार देने से फायदा हो सकता है।

मैवेन (जार निर्भरता) के कुछ महत्वपूर्ण लाभ आईवी (http://ant.apache.org/ivy/) के साथ हो सकते हैं।

फिर से, क्योंकि आप संकेत देते हैं कि आप एकमात्र डेवलपर हैं। अगर मैवेन आपके लिए काम नहीं करता है, तो आप जल्दी से वापस लौट सकते हैं।

बीआर,
~ एक

1

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

0

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

हालांकि सबसे आसान बात यह है कि किसी ऐसे व्यक्ति से पूछें जो पहले से ही एमवीएन जानता है, तो वह आपको दिखा सकता है कि यह कैसे काम करता है और फिर आप इसे बहुत तेज़ी से सीखते हैं।

4

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

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

मेरे राय:

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

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

0

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

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

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