2009-02-06 15 views
11

मैं अपनी बिल्ड प्रक्रिया को संशोधित करने की कोशिश कर रहा हूं, जो वर्तमान में एक विशाल चींटी build.xml है जो अन्य चींटी बिल्ड फाइलों में कॉल करता है और कई जटिल तर्कों को निष्पादित करने के लिए कई जावा क्लास निष्पादित करता है जो चींटी में प्रयास करने के लिए असंभव/डरावना होगा।जटिल निर्माण प्रक्रिया के लिए आप क्या उपयोग करते हैं?

पृष्ठभूमि: जावा और चींटी में

  • अनुभव, कुछ ग्रूवी
  • विंडोज प्लेटफॉर्म

लक्ष्य: आदेश पंक्ति क्रॉन के संयोजन के रूप

  • रन और जब एक servlet को
  • पर सरलीफ़ी के रूप में पोस्ट किया गया है एड के रूप में संभव है, सबसे कम भाषाओं और techs

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

+2

बस चलाने के चिल्ला ..... – Skizz

उत्तर

8

चींटी आपका उल्लेख किया और scarry मेकअप/autotools छोड़कर, मुख्य धारा उपकरण हैं:

मैं SCons उपयोग करते हैं, क्योंकि यह अजगर आधारित, अच्छी तरह से वित्त पोषित और सुरुचिपूर्ण है। जाम सबसे व्यावहारिक प्रतीत होता है। मुझे सीएमके के बारे में बहुत कुछ पता नहीं है। मेवेन आपके लिए पसंद हो सकता है क्योंकि यह जावा केंद्रित है और चींटी से अधिक उच्च स्तर है।

अधिक आप विकिपीडिया पर पा सकते हैं: List of built tools

+0

मेवेन निश्चित रूप से एक अच्छी पसंद है। –

+2

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

+1

ग्रैडल एक बहुत ही रोचक और कॉमर जैसा दिखता है। मुझे यह तथ्य पसंद है कि यह मेवेन/आईवी एकीकरण –

3

मुझे Rake का उपयोग करना पसंद है क्योंकि आप पूरे Ruby भाषा की शक्ति पर वापस आ सकते हैं और इसकी आवश्यकता होने पर यह ढांचा लाइब्रेरी है।

+0

और क्या कौवे के बारे में दूर चला? :) – rkj

3

मैं अपने macro feature का लाभ उठाते हुए चींटी का उपयोग करता हूं। यदि आप एक सतत प्रबंधक में अपनी परियोजना लेआउट करते हैं, तो आप मैक्रोज़ लिखकर बहुत सारे डुप्लिकेशंस को खत्म कर सकते हैं।

मैं Antlib का निर्माण कर रहा हूं जिसमें मैक्रोज़ और कस्टम कार्य शामिल हैं जिन्हें मैं कई परियोजनाओं में पुन: उपयोग करता हूं।

वैकल्पिक रूप से, कुछ लोग मेवेन द्वारा कसम खाता है। अन्य लोग सिर्फ मेवेन के बारे में कसम खाता हूँ।

4

इसके अलावा

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

2

मैं Maven, का उपयोग सिर्फ निर्माण के लिए, मैं भी उनकी रिहाई/जिले प्लगइन का उपयोग नहीं।

कमांड की एक जोड़ी में मेरे पास कोड हो सकता है जो निर्माण, पैकेज और रिलीज के लिए स्रोत नियंत्रण में था।

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

चींटी मुश्किल लग रहा है जब Maven की तुलना में। निश्चित रूप से मेवेन के साथ एक सीखने की वक्र है, लेकिन एक pom.xml पढ़ने से build.xml पढ़ने से कहीं अधिक आसान है।

Maven अब तक कम वर्बोज़ की जरूरत है।

1

मुझे चींटी पसंद है लेकिन केवल तभी जब आप जटिल कार्यों को समाहित करने के लिए अपना स्वयं का जावा प्लगइन्स लिखने के लिए समय बिताते हैं। यह मुश्किल नहीं है लेकिन दुर्भाग्यवश अधिकांश लोग एक्सएमएल डब्ल्यू/एंटी-कॉन्ट्रिब सामान में अपना तर्क लिखने का प्रयास करते हैं। मुझे लगता है कि यह एक बड़ी गलती है।

मैंने रेक और ग्रोवी टूल्स (किसी अन्य टिप्पणी में उल्लिखित) के बारे में अच्छी बातें सुनी हैं लेकिन मुझे उनके साथ कोई अनुभव नहीं मिला है।

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

इस तरह के प्रश्न पूछने के लिए एक और जगह CITCON mailing list है। CITCON निरंतर एकीकरण और परीक्षण पर एक सम्मेलन है और संबंधित मेलिंग सूची इस तरह के विषयों के आसपास वास्तव में एक महान समुदाय बन गई है।

(मैं CITCON के लिए एक आयोजक लेकिन प्यार का श्रम एक लाभ निर्माता। यह वास्तव में एक बहुत उपयोगी मेलिंग सूची है नहीं हूँ। अगर मैं पैसे के लिए कुछ रोगी था यह The CI Guys होगा। ;-))

7

आप Maven का पीछा है, तो आप दोनों समस्याओं होगा: एक जटिल निर्माण और सीखने च @ # * Maven की "जादू" ing। मेवेन सिर्फ समस्या को और खराब कर देता है क्योंकि यह उलझन में है और अत्यधिक जटिल है।

मैं एक बड़ी फॉर्च्यून 500 कंपनी में एक विरासत Maven 1.x निर्माण विरासत में मिला। मैंने हाल के वर्षों में कई अन्य परियोजनाओं पर पसंद करके मैवेन 2.x का उपयोग किया। मैंने मेस्ट्रो का मूल्यांकन किया, उम्मीद है कि यह मेवेन को व्यवहार्य बना सकता है। मेरा निष्कर्ष, कई अन्य लोगों की तरह '(' नेट) की जांच करें, यह है कि मैवेन गलत दिशा में एक बड़ा कदम है। यह निश्चित रूप से चींटी पर सुधार नहीं है।

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

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

मैंने दो साल बिताए एक विकल्प की तलाश में, और मैंने इसे पाया: पायथन। इसमें सिस्टम-स्तरीय पहुंच, क्रॉस-प्लेटफार्म पोर्टेबिलिटी, सादगी, पठनीयता, शक्ति, मजबूती और परिपक्वता का सही संयोजन है। स्कैन, बिल्डबॉट, सेटअपटोल/आसान स्थापना, और आधार पायथन बिल्ड प्रक्रिया के लिए मेरा वर्तमान लक्ष्य मंच है। जब आवश्यक हो, चींटी, मेवेन और किसी अन्य ऐसे उपकरण के साथ एकीकरण आसान है। इस बीच, मैं किसी भी स्रोत भाषा के साथ किसी भी मंच पर किसी भी निर्माण के मूल के लिए इन उपकरणों का उपयोग कर सकता हूं। कोई और रोडब्लॉक नहीं, और अधिक पागल जटिलता, कोई और माना जाता है-सहायक "घोषणात्मक" स्क्रिप्टिंग, कोई और ब्लैक-बॉक्स एफ @ * # आईएनजी "जादू" नहीं है।

यदि आप पाइथन पर स्विच नहीं कर सकते हैं, तो एंटी + आइवी (apache.org पर) आज़माएं। यह आपको मेवेन की अधिकांश बुराइयों के बिना मेवेन का ठंडा भंडार देता है। यही वह है जो मैं भी कर रहा हूं, जहां आवश्यक और उपयुक्त है।

शुभकामनाएं।

+0

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

+1

बिल्डिंग सिस्टम की वजह से प्रोग्रामिंग भाषा बदलना ... संदिग्ध है। अनुमोदित जावा बिल्ड सिस्टम चूसते हैं, लेकिन यह ध्यान देने योग्य है कि सी/सी ++ वास्तव में खराब था। मुझे उम्मीद है कि कोई व्यक्ति एंट/मेवेन प्रतिस्थापन के साथ बाहर आ जाएगा। – Gili

0

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

हम अभी भी संस्करण 1.2.3 का उपयोग कर रहे हैं, लेकिन मुझे लगता है कि यह 1.6.0 तक है। यह सिर्फ काम करता है।

http://luntbuild.javaforge.com/

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

संपादित करें: ऐसा लगता है कि आप एंटो को ग्रोवी से कॉल कर सकते हैं। यह अच्छा होगा क्योंकि तब आप उन सभी कार्यों का पुन: उपयोग कर सकते हैं जो पहले से ही चींटी के लिए मौजूद हैं।

http://groovy.codehaus.org/Using+Ant+from+Groovy

0

मैं हर जगह रैक का उपयोग मैं कर सकते हैं। जहां आपको जावा कोड बनाने की आवश्यकता है, आप इसे jruby के साथ उपयोग कर सकते हैं, या कुछ ऐसा देख सकते हैं: buildr

1

जब आप जावा बना रहे हैं तो चींटी के साथ चिपकाएं। मैंने कुछ जेएनआई काम के लिए चींटी/स्कैन मिश्रित किए हैं, लेकिन आम तौर पर मैं चींटी के साथ रहूंगा, खासकर जब से आप चींटी में मौजूदा बिल्ड सेटअप प्राप्त कर चुके हैं। मैवेन को पोर्टिंग एक दीवार के माध्यम से एक छेद के साथ एक वर्ग peg shoving की तरह होगा।

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

0

प्रयास करें FinalBuilder

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

कुछ योजनाओं के साथ बहुत सुव्यवस्थित किया जा सकता है।

+0

प्लस उनके विज्ञापनों में जॉन स्कीट की सुविधा है! आपको और क्या चाहिए? –

1

मैं सप्ताह के किसी भी दिन चींटी के साथ जाऊंगा।

यह सही नहीं है; एक्सएमएल बहुत वर्बोज़ है और किसी भी तर्क को लागू करना लगभग असंभव है, लेकिन टीम के सबसे जूनियर इंजीनियर भी कम से कम समझ सकते हैं कि एक दिन में चींटी फाइल क्या कर रही है।

जटिल तर्क को जावा का उपयोग करके पुन: सक्रिय किया जा सकता है और यदि आप चाहें तो चींटी में एकीकृत किया जा सकता है। चींटी आपको जावा की सभी शक्ति देता है :)

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

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

मैं Maven के साथ दो महत्वपूर्ण समस्याओं देखें:

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

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

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

मेरी सलाह, अगर आप और आपकी टीम को चींटी से निपटने का तरीका पता है, तो अपनी चींटी फ़ाइल को दोबारा करने की कोशिश करें और किसी अन्य निर्माण उपकरण पर कूद न करें। इसे सही करने में बहुत समय लगता है; समय आप पैसा बनाने और कंपनी के रूप में जीवित रहने में व्यतीत कर सकते हैं :)

+0

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

0

मुझे इन समाधानों में जोड़ना है जो मुझे लगता है कि मैं बिना नहीं रह सकता ... इसे Hudson कहा जाता है। इसे सेटअप करने में केवल कुछ सेकंड लगते हैं और आप आमतौर पर जो कुछ भी कर सकते हैं, उससे अधिकतर हो सकते हैं जो आपकी मौजूदा एएनटी फाइलें पहले से ही कर रही हैं।

इसके अतिरिक्त, हडसन "क्रॉन" निर्माण, परीक्षण मामलों को निष्पादित करने, और "कलाकृतियों" (जैसे उत्पादों का निर्माण) उत्पन्न करने का एक शानदार तरीका प्रदान करता है जिससे कोई भी डाउनलोड कर सके।

यह आपके लिए जो कुछ भी कर सकता है उसे कैप्चर करना मुश्किल है ... तो बस इसे आज़माएं ... आप निराश नहीं होंगे।

0

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

-1

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

हमारी कंपनी में, हमने एक सामान्य उद्देश्य चींटी निर्माता बनाया है जो बहुत सी चीजें करता है: बिल्ड, छवियों को संकलित करें, छोटा करें, दस्तावेज उत्पन्न करें, फाइलें पैक करें .. यह खुला स्रोत है और हम सुधार के लिए खुले हैं। आप इसे यहाँ प्राप्त कर सकते हैं:

https://github.com/edertone/TurboBuilder

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