2008-10-11 8 views
20

मेरी छोटी सी अनुभव से, मैंने केवल एंट को बिल्ड टूल के रूप में उपयोग किया है। क्या कोई अन्य परियोजनाएं बेहतर हैं, और क्यों?क्या ऐंट अभी भी जावा बिल्ड टूल के लिए सबसे अच्छा विकल्प है?

उत्तर

22

Maven

यह चींटी की तुलना में बेहतर है, क्योंकि सबसे सामान्य कार्यों के लिए आप एक जटिल build.xml लिखने के लिए नहीं है, Maven बहुत अच्छा चूक है और यह विन्यास भर में सम्मेलन है।

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

यह नेटबीन्स और ग्रहण (m2eclipse प्लगइन) दोनों के साथ भी अच्छी तरह से एकीकृत है, इसलिए आईडीई pom.xml फ़ाइल में जो भी सेटिंग्स (निर्भरताओं सहित) का सम्मान करता है।

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

+0

क्या आपको लगता है कि मैवेन एक प्रोजेक्ट परिभाषा से अधिक है जिससे इस प्रकार बिल्ड बनाम चींटी बनती है जो इसे अपने लिए करने के लिए निम्न स्तर पर छोड़ देती है? तरह की, लेकिन कम चरम, सी बनाम असेंबली भाषा? – dacracot

+0

ऐसा माना जा सकता है, हां। लेकिन मेरे लिए क्या महत्वपूर्ण है, क्या यह है कि आईडीई प्लगइन के साथ मेवेन एक बेहतर निर्माण उपकरण बनाता है और यही वह है। –

+2

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

4

कुछ लोग Ivy पसंद करते हैं, जो चींटी की चींटी का प्रबंधन करने वाली निर्भरता है, इसलिए मुझे लगता है कि चींटी पृष्ठभूमि से आने वाले लोग इसे पसंद करेंगे।

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

व्यक्तिगत रूप से, मैं बस Maven का उपयोग करता हूं। डिफ़ॉल्ट pom.xml फ़ाइल को चाबुक करना आसान है और आपके निपटान में सभी बिल्ड कमांड हैं। और जब परियोजना बढ़ती है, तो प्लगइन चलाने और निर्भरताओं को जोड़ने के लिए आपके पास पहले से ही आधारभूत संरचना है।

+0

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

0

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

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

बहुत अच्छी खबर यह है कि यदि आपकी प्रक्रिया अच्छी स्विचिंग बिल्ड टूल्स एक काफी दर्द रहित प्रक्रिया है - सबक - हाथ में समस्या के लिए एक अच्छी प्रक्रिया के साथ शुरू करें।

1

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

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

1

Maven2 ऊपर और आने वाली चीज़ प्रतीत होता है।

हमारी परियोजनाओं के लिए हालांकि हम जहां भी संभव हो वहां चींटियों में वापस माइग्रेट कर रहे हैं।

मैवेन 2 को बिल्कुल वही तरीका प्राप्त करने के लिए बहुत कुछ ज्ञान की आवश्यकता है, और मैवेन 2 संस्करण अलग-अलग क्लासपाथ को संभालने लगते हैं।

और यह सभी लाइसेंस निर्भरता की निर्भरता में शामिल है, जिसमें तैयार हो सकती है जांच करने के लिए एक दर्द है

और एक धीमी शुरू हुआ समय हो सकता है, आप अपने आप को निर्भरता यह पता लगाने की जरूरत के रूप में, लेकिन कम से कम यह आसानी से पठनीय है। कोई जादू यहाँ नहीं जा रहा है :)

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

* हमें maven1 के साथ जला दिया गया; ibiblio maven1 भंडार रीडायरेक्ट और maven1 रीडायरेक्ट :(

+0

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

11

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

मेवेन 2 भी एक प्रमुख खिलाड़ी है। मुझे पता है कि लोग इसे पसंद करते हैं और ब्रिस्टल आलोचनाएं जो मेवेन 1 के लिए सच थीं (यह एक लंबा सफर तय किया गया है)

ग्रोवी कुछ ठंडा है निर्माण अंतरिक्ष में टफ, क्योंकि वे चींटी पर निर्माण करते हैं। गैंट का उपयोग Grails में किया जाता है, लेकिन इसे Gradle में subsumed किया जा सकता है। इन्हें जावा के लिए भी इस्तेमाल किया जा सकता है।

गैन्ट और ग्रैडल के बारे में अपने ब्लॉग, here is a post को पंप करने के जोखिम पर। यहां उनके भविष्य के बारे में very current debate का एक लिंक दिया गया है। एंटरप्राइज़ में

+3

फॉलो-अप के रूप में, ग्रैडल ने गैंट को तंग कर दिया है। ग्रैडल निश्चित रूप से प्राथमिक ग्रोवी-आधारित निर्माण उपकरण है, और सामान्य रूप से सर्वश्रेष्ठ नस्ल के रूप में एक वास्तविक दावेदार है। –

5

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

फिर फिर, यदि आप कुछ मेवेन की विशेषताओं को चाहते हैं, तो एंटी लोगों में निर्भरता सुविधा के लिए आईवी (http://ant.apache.org/ivy/) है।

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

गुड लक,

+0

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

4

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

+0

गैंट के साथ सावधान रहें - ग्रोवी डिबगिंग अभी बहुत खराब है, और गैंट को बहुत अधिक परीक्षण और त्रुटि बनाता है (हालांकि साफ विचार, और एक अच्छा डीबगर के साथ, यह बहुत अच्छा हो सकता है) –

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