2011-12-20 17 views
6

मैं एक मैवेन प्रोजेक्ट को स्विच करने पर विचार कर रहा हूं जिसे मैं अपाचे-एंट/आईवी में प्रबंधित करता हूं। मुझे निर्माण प्रक्रिया पर अधिक नियंत्रण की आवश्यकता है और मैवेन से बहुत निराश हो रहा हूं। मैवेन कितना महान है इस बारे में कोई टिप्पणी नहीं करें। मेरा सवाल आइवी के बारे में है।चींटी/आइवी

मैं एक "मानक" चींटी निर्माण टेम्पलेट स्थापित करना चाहता हूं जिसे बाद में अन्य परियोजनाओं के लिए न्यूनतम परिवर्तनों के साथ उपयोग किया जा सकता है।

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

प्रत्येक डेवलपर के पास ~/.ivy/repository में एक निजी भंडार होगा। मैं एंटी बिल्ड को एंटरप्राइज़ रिपोजिटरी से पुस्तकालयों के बदले संस्करणों के साथ स्वचालित रूप से इस निजी भंडार को अद्यतन करना चाहता हूं।

~/.ivy/ant में, मैं व्यक्तिगत परियोजना build.xml फ़ाइलों में शामिल करने के लिए "मानक" मॉड्यूल रखने की योजना बना रहा हूं, include कार्य Ant 1.8 में उपयोग कर रहा हूं। ये मॉड्यूल Scala और Clojure विभिन्न स्केल और क्लोजर संस्करणों के लिए विभिन्न संस्करणों के साथ संकलन लक्ष्य जैसे उदाहरण प्रदान करेंगे (उदाहरण: scala-compile-2.9.1.xml, clojure-compile-1.3.xml, आदि) निर्माण मॉड्यूल एंटरप्राइज़ भंडार में उपलब्ध होंगे और निजी भंडारों में स्वचालित रूप से अपडेट किए जाने चाहिए वह बदल गए।

प्रत्येक परियोजना के लिए एक मानक Maven निर्देशिका संरचना का पालन करेंगे: ${project}/src/main/java, ${project}/target/classes, आदि

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

क्या यह किया जा सकता है? क्या मैं आधार से दूर हूं? आईवी पर एकमात्र दस्तावेज मैं अपाचे वेबसाइट (http://ant.apache.org/ivy) पर पा सकता हूं। क्या पुस्तकों समेत कोई अन्य दस्तावेज उपलब्ध है?

+0

मुझे नहीं लगता कि आपको पुस्तकालयों के लिए निजी भंडार की आवश्यकता होगी। आईवी अपने स्वयं के [कैश] (https://ant.apache.org/ivy/history/latest-milestone/concept.html#cache) को ~/.ivy2 में प्रबंधित करता है, जो निर्भरता को हल करते समय अद्यतित रहेगा। – oers

उत्तर

2

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

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

तब मेरे पास प्रतिनिधि.एक्सएमएल है जो बाल परियोजनाओं को सामान्य निर्माण गतिविधियों का प्रतिनिधित्व करता है। मेरे पास मल्टीमॉड प्रोजेक्ट के लिए डिस्ट, सब, टेस्ट और जो भी आप चाहते हैं। निर्माण आदेश का मूल्यांकन एंटी-आईवी कार्य बिल्डलिस्ट के साथ किया जाता है।

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

संपादित करें: पुस्तकों के बारे में - एंट इन एक्शन आपकी मदद कर सकता है, मैंने इस पुस्तक से कई विचार किए हैं, और मैं वास्तव में इसे पढ़ने के लिए हर किसी को अत्यधिक अनुशंसा करता हूं। वहां आप आईवी सामान भी पा सकते हैं। और आईवी दस्तावेज़ों के बारे में - क्षमा करें, यह सब उपलब्ध है। लेकिन जब मैं इस बोझिल आईवी + चींटी के साथ परेशानी में था - मुझे निजी ब्लॉग पर कई दिलचस्प लेख मिले। तो ... यह अंतर को किसी भी तरह से भर सकता है।