2013-02-19 14 views
29

मैंने हाल ही में ग्रैडल को बिल्ड सिस्टम के रूप में उपयोग करना शुरू कर दिया है। वे पहली बार तुलना कि Gradle चींटी और Maven की पसंद के साथ करता है कि, चींटी, एक जरूरी निर्माण प्रणाली है, जबकि Maven एक कथात्मक निर्माण प्रणाली है। जबकि ग्रैडल घोषणात्मक मेवेन द्वारा लागू कठोरता के बिना सिस्टम बनाने के लिए है।इंपीरेटिव बनाम घोषणात्मक बिल्ड सिस्टम

मैंने इन शर्तों को कथात्मक और जरूरी बेहतर जब यह निर्माण प्रणाली के बारे में बात करने के लिए आता समझने के लिए करना चाहता था।

उत्तर

41

संक्षेप में, एक चींटी स्क्रिप्ट चींटी उपकरण को बताती है कि क्या करें - "इन फ़ाइलों को संकलित करें और फिर उन्हें उस फ़ोल्डर में कॉपी करें। फिर इस फ़ोल्डर की सामग्री लें और संग्रह बनाएं।"

एक Maven pom वाणी जबकि हम परिणाम के रूप में लेना पसंद क्या होगा - "यहाँ पुस्तकालयों परियोजना पर निर्भर करता है के नाम हैं, और हम एक वेब संग्रह उत्पन्न करने के लिए चाहते हैं"। मेवेन जानता है कि पुस्तकालयों को कैसे लाया जाए और स्रोत वर्गों को अपने आप कहां मिलें।

जबकि चींटी आपको अधिक लचीलापन देती है, यह आपको लगातार पहिया को फिर से शुरू करने के लिए मजबूर करती है।

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

संपादित करें: चींटी-Maven तुलना का एक महत्वपूर्ण पहलू Maven, एक सम्मेलन, करते हुए बताया कि जहां फाइलों में होना चाहिए जहां निर्भरता, पाए जाते हैं जहां जिसके परिणामस्वरूप विरूपण साक्ष्य डाल करने के लिए है कि जब चींटी नहीं है ।

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

EDIT2: 'पहिया को पुनर्निर्मित करना' रूपक अपेक्षा से कम स्पष्ट प्रतीत होता है। मेरा यही मतलब है:

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

जैसा कि मैंने नीचे एक टिप्पणी में कहा था, जबकि चींटी निर्माण के लिए सर्वोत्तम प्रथाएं मौजूद हैं, फिर भी उन्हें प्रत्येक प्रोजेक्ट के लिए लागू किया जाना है, या प्रोजेक्ट से प्रोजेक्ट में कॉपी-पेस्ट किया जाना चाहिए, बॉक्स ऑफ आउट होने के बजाय निर्माण उपकरण के डिफ़ॉल्ट ही।

मैवेन मेरे स्वाद के लिए व्यापार के दूसरी तरफ थोड़ा सा दूर है। डिफ़ॉल्ट को बदलना उतना आसान नहीं है जितना यह हो सकता है और होना चाहिए।

+0

जबकि मैंने चींटी पर काम नहीं किया है, लेकिन ऐसा कुछ पहले से ही हल किया जाना चाहिए?चींटी में प्लगइन के कुछ भाग की तरह कि एक ही चीज अधिक परियोजनाओं में? –

+1

@ अंकितधिंगरा मुझे डर है कि चींटी के साथ लोकप्रिय अभ्यास पिछली बार काम करने वाली सेटिंग्स को कॉपी-पेस्ट करना है :) सर्वोत्तम प्रथाएं हैं, यकीन है, लेकिन आपको अभी भी उन्हें लागू करना है। कृपया – kostja

+0

@ एंकिटिंगिंग्रा को संपादित करें, ठीक है, यह वास्तव में पहिया को फिर से शुरू करने की तरह नहीं है, आप सही हैं, बल्कि इसे पुनर्निर्माण कर रहे हैं। – kostja

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