मेवेन जावा बिल्ड टूलसेट के प्रतिस्थापन के रूप में आप क्या सुझाव देंगे? बस सादा चींटी स्क्रिप्ट? SCons?मेवेन प्रतिस्थापन?
उत्तर
मुझे मैवेन के विचार पसंद है, मैं हमेशा अपने आप को किसी भी चीज़ के लिए लड़ रहा हूं लेकिन सबसे सरल विन्यास। इसकी वास्तुकला प्लगइन आधारित है, और प्लगइन की गुणवत्ता व्यापक रूप से भिन्न होती है। दस्तावेज़ीकरण सबसे अच्छा स्केची है; आधा समय मुझे पता नहीं लगा सकता है कि जो दस्तावेज़ मैं पढ़ रहा हूं वह मैवेन 1 या 2 के लिए है। और कुछ बुनियादी करने के लिए आपको maven-ant-plugin
का उपयोग करने के लिए कितनी बार सहारा लेना पड़ा?
मैं लगभग एक साल से Apache Ivy का उपयोग कर रहा हूं, और मैं इसके साथ बहुत खुश हूं। यद्यपि एक सीखने की अवस्था में थोड़ा सा है। लेकिन एक सक्रिय मेलिंग सूची है, और लेखक बहुत ही संवेदनशील है।
जो मैंने समाप्त किया वह कुछ सरल चींटियों जैसे "संकल्प", "संकलन", "इंस्टॉल" इत्यादि की "लाइब्रेरी" लिख रहा था, जो अपेक्षा करता है कि चीजें मानक मैवेन स्थानों (जैसे src/main/java
) में हों) और फिर <import>
मेरी विभिन्न परियोजनाओं में लक्ष्य। इस तरह आप दोनों दुनिया के सर्वश्रेष्ठ- मेवेन-स्टाइल कॉन्फ़िगरेशन, और चींटी की सभी शक्तियां प्राप्त करते हैं।
मुझे Ivy के साथ चींटी का उपयोग करने का शौक है। आइवी मैवेन रिपॉजिटरीज का उपयोग लाइब्रेरी निर्भरताओं को लाने के लिए करता है बिना आपको मैवेन के अनुरूप अपने पूरे बिल्ड सिस्टम को बदलने के लिए मजबूर करता है।
मैं अपनी कुछ परियोजनाओं के लिए buildr का उपयोग कर रहा हूं। बहुत terse और पठनीय निर्माण स्क्रिप्ट (कोई xml) और यह मैवेन repos (छोटे प्रयास के साथ, maven 1 और maven 2) का उपयोग करता है।
मैं कुछ परियोजनाओं के लिए काम करने के लिए कुछ पोस्ट-मैवेन 1 ढूंढ रहा था और एम 2 सभी आकर्षक नहीं था। मेवेन पहले से ही सभी एम 1 उपयोगकर्ताओं को अपने सभी बिल्ड सिस्टम को फिर से शुरू करने की आवश्यकता के साथ उच्च और सूखा छोड़ चुका था (और मेरा कुछ एम 2 में व्यक्त नहीं किया जा सकता है, जहां तक मैं कह सकता हूं)।
मैं निर्माता के साथ जाऊंगा, अगर मैं अपने निर्माण में जटिल निर्माण लक्ष्यों की अपेक्षा कर रहा हूं। लाभ यह है कि आप किसी भी विशेष पुस्तकालय पर निर्भर नहीं हैं। रुबी से आपके पास जो भी हो, वह करने के लिए आपके पास सभी एपीआई हैं; आइवी के विपरीत आप किस मामले में अभी भी एएनटी से बंधे हैं। आइवी में माइग्रेशन का प्रयास मूल्यवान है यदि आप पहले से स्थापित एएनटी आधारित बिल्ड मैकेनिज्म के लिए लाइब्रेरी निर्भरता पेश करना चाहते हैं जो आप सभी कार्यों को करना चाहते हैं।
मेवेन के कम से कम तीन अलग-अलग हिस्सों हैं: भंडार, कार्यान्वयन स्वतंत्र जीवनशैली और एक डिफ़ॉल्ट परियोजना के लिए सम्मेलन। आइवी का उपयोग केवल भंडार प्रदान करता है।
मैंने इसका उपयोग नहीं किया है, लेकिन मुझे लगता है कि easyant को मैवेन के लिए एक और पूर्ण प्रतिस्थापन के रूप में डिज़ाइन किया गया है। यह आइवी को भंडार के रूप में उपयोग करता है लेकिन फिर सम्मेलन और मानक मॉड्यूल जोड़ता है।
मुझे EasyAnt दिलचस्प लगता है लेकिन उनका दस्तावेज़ इतना अच्छा नहीं है। इसे यह कहना चाहिए कि ज्यादातर जावा का लक्ष्य है और यह एंट और मेवेन की तुलना में कैसे करता है जो जावा में सबसे बड़े वर्तमान खिलाड़ी हैं। – Wernight
मुझे वास्तव में ant4eclipse का उपयोग करना पसंद है - आपने ग्रहण में अपनी परियोजना निर्भरताओं को सामान्य के रूप में स्थापित किया है और आप एक एकल चींटी स्क्रिप्ट लिख सकते हैं जो सभी परियोजनाओं को सही क्रम में बनाएगा।
तृतीय-पक्षीय libs के लिए, आप या तो अपने सभी जारों (और इसे निर्यात नहीं करते) में एक एकल ग्रहण परियोजना (और निर्यात) स्थापित कर सकते हैं, या प्रत्येक तृतीय-पक्ष lib के लिए एक अलग प्रोजेक्ट निर्यात कर सकते हैं, जार। [मैं बाद वाले बी/सी की सिफारिश करता हूं कि आप प्रोजेक्ट-> थर्ड-पार्टी डीपी ट्रैक कर सकते हैं और आवश्यकता होने पर भागों को अपग्रेड कर सकते हैं।]
यह आपके द्वारा उपयोग किए जाने वाले कार्यों पर निर्भर करता है। मेवेन 1? मेवेन 2? मुझे मैवेन 2 को डॉक्यूमेंटेड, और काफी शक्तिशाली लगता है, जब चींटी कार्यों और कुछ घर बेक्ड जावा प्लगइन्स के संयोजन में उपयोग किया जाता है।
चींटी से चींटियों का उपयोग करने के लिए चींटी कार्य हैं: http://maven.apache.org/ant-tasks/index.html। तो आपको वास्तव में अपनी खुद की "लाइब्रेरी" लिखने की ज़रूरत नहीं है।
और आप एंट से मेवेन को कॉल कर सकते हैं: http://maven.apache.org/plugins/maven-antrun-plugin/।
आप ग्रोवी का उपयोग करके चीजों को स्क्रिप्ट भी कर सकते हैं उदाहरण के लिए: http://groovy.codehaus.org/GMaven+-+Executing+Groovy+Code।
या कस्टम बिट्स के लिए केवल जावा कोड लिखें: http://maven.apache.org/guides/plugin/guide-java-plugin-development.html।
वहाँ का मिश्रण न कोई कारण नहीं है और मैच, जब आप इसे कर सकते हैं;)
(टिप्पणी जोड़ा गया है इसलिए मैं इस जवाब को याद कर सकता हूं) +1 – toolkit
जाना एक ही तरीका है, एक्सएमएल (चींटी) कार्यों हम क्या करना चाहते हैं के लिए उपयुक्त नहीं है। यह आश्चर्य की बात है कि समुदाय को इसे कब समझने की जरूरत है। – Denis