2012-08-09 19 views
57

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

उत्तर

110

दोनों प्लगइन और निर्भरता जार फाइलें हैं।

लेकिन उनके बीच का अंतर यह है कि मेवेन में अधिकांश काम प्लगइन का उपयोग करके किया जाता है; जबकि निर्भरता सिर्फ एक जार फ़ाइल है जो कार्य निष्पादित करते समय कक्षापथ में जोड़ दी जाएगी।

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

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

तो, हम कह सकते हैं, प्लगइन एक जार फ़ाइल है जो कार्य निष्पादित करती है, और निर्भरता एक जार है जो कार्य निष्पादित करने के लिए कक्षा फ़ाइलों को प्रदान करती है।

आशा है कि आपके प्रश्न का उत्तर दें!

+0

स्पष्टीकरण के लिए धन्यवाद अब मुझे यह स्पष्ट मिला :) – Soumyaansh

+1

अच्छा स्पष्टीकरण। – bugCracker

+0

क्या कोई मुझे बता सकता है कि निष्पादन में चरण और लक्ष्य के बीच क्या अंतर है ?? जैसा कि मुझे पता था कि चरण मैवेन के जीवन चक्र के बारे में बात कर रहा है .. लेकिन फिर लक्ष्य क्यों? कोई संकेत? कभी-कभी मैं लोगों को लक्ष्य पर जीवन चक्र कीवर्ड डालता हूं ... ??? (?।?) – taymedee

28

मेवेन को स्वयं खाद्य प्रोसेसर के रूप में वर्णित किया जा सकता है जिसमें कई अलग-अलग इकाइयां हैं जिनका उपयोग विभिन्न कार्यों को पूरा करने के लिए किया जा सकता है। उन इकाइयों को प्लगइन्स कहा जाता है। उदाहरण के लिए, अपने प्रोजेक्ट मेवेन को संकलित करने के लिए maven-compiler-plugin का उपयोग करें, परीक्षण चलाने के लिए - maven-surefire-plugin और इसी तरह।

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

+0

त्वरित उत्तर के लिए धन्यवाद, क्षमा करें, लेकिन फिर भी मैं उलझन में हूं क्योंकि मुझे पता है कि जुनीट भी एक ढांचा है और (हाइबरनेट, वसंत) भी ढांचे के नीचे आता है, इसलिए इसका मतलब है कि मामलों (हाइबरनेट, वसंत) को भी कॉन्फ़िगर किया जा सकता है निर्भरता टैग में? मुझे आशा है कि आपको मेरा प्रश्न मिल जाएगा। – Soumyaansh

+0

हां, और जहां तक ​​मुझे पता है कि स्प्रिंग मेवेन प्लगइन जैसी कोई चीज़ नहीं है। आमतौर पर, स्प्रिंग लिब (या हाइबरनेट, या जुनीट, या टेस्टएनजी इत्यादि) को आपकी परियोजना के लिए निर्भरता के रूप में घोषित किया जाता है। यदि आप मेवेन के लिए नए हैं तो मैं [यह] (http://www.sonatype.com/books/mvnref-book/reference/) बहुत अच्छी किताब पढ़ने की सिफारिश करता हूं। –

+0

लिंक के लिए धन्यवाद मैं निश्चित रूप से इसके माध्यम से जाना होगा !! – Soumyaansh

3

प्लग-इन (eclipse समर्थन या आदि Maven को SpringBoot समर्थन को जोड़ना) Maven ही कार्यक्षमताओं को जोड़ने के लिए उपयोग किया जाता है। उदाहरण के लिए किसी भी मेवेन चरण (compile या test को पास करने के लिए आपके स्रोत कोड द्वारा निर्भरता की आवश्यकता है)। JUnit के मामले में परीक्षण कोड मूल रूप से आपके कोड बेस का हिस्सा है और आप परीक्षण सूट के अंदर JUnit विशिष्ट आदेशों को कॉल करते हैं और उन आदेशों को Java SDK द्वारा प्रदान नहीं किया जाता है इसलिए JUnit उस समय उपस्थित होना चाहिए जब Maven परीक्षण चरण में है और इसे संभाला जाता है अपने pom.xml फ़ाइल में निर्भरता के रूप में JUnit का उल्लेख करके।

3

आप मेरे जैसे एक सामने के अंत पृष्ठभूमि से आ रहे हैं, और ग्रंट और NPM से परिचित हैं, इस तरह यह के बारे में सोच:

पहले तुम चल पाएंगे, कहते हैं, npm install grunt-contrib-copy --save-dev। यह मेवेन की <dependency></dependency> की तरह है। यह बिल्ड कार्य निष्पादित करने के लिए आवश्यक फ़ाइलों को डाउनलोड करता है।

तो फिर तुम

copy: { 
    main: { 
    src: 'src/*', 
    dest: 'dest/', 
    }, 
} 

यह Maven के <plugin>/<plugin> की तरह है Gruntfile.js

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

बेशक यह एक सटीक समानता नहीं है, लेकिन इसके चारों ओर अपने सिर को लपेटने में मदद करने के लिए पर्याप्त बंद करें।