ग्रहण को वृद्धिशील बिल्ड की अवधारणा मिली है। यह अविश्वसनीय रूप से उपयोगी है क्योंकि यह बहुत समय बचाता है।
यह कैसे उपयोगी है
कहते हैं कि आपने केवल एक .java फ़ाइल बदल दी है। वृद्धिशील बिल्डरों को सब कुछ recompile किए बिना कोड संकलित करने में सक्षम होगा (जिसमें अधिक समय लगेगा)।
अब मावेन प्लगइन्स के साथ क्या समस्या है
अधिकांश मावेन प्लगइन्स वृद्धिशील बिल्ड के लिए डिज़ाइन नहीं किए गए हैं और इसलिए यह m2e के लिए परेशानी पैदा करता है। m2e पता नहीं है कि क्या प्लगइन लक्ष्य कुछ है जो महत्वपूर्ण है या यदि यह अप्रासंगिक है। यदि यह एकल फ़ाइल के बदलने पर हर प्लगइन को निष्पादित करता है, तो बहुत समय लगने वाला है।
यही कारण है कि एम 2 मेटाडेटा जानकारी पर निर्भर करता है कि निष्पादन को कैसे नियंत्रित किया जाना चाहिए। इस मेटाडेटा जानकारी प्रदान करने के लिए m2e विभिन्न विकल्पों के साथ आया है और वरीयता क्रम निम्नानुसार है (उच्चतम से निम्नतम)
- परियोजना की pom.xml फ़ाइल
- pom.xml फ़ाइलों पर माता-पिता, भव्य-माता-पिता इत्यादि
- [m2e 1.2+] कार्यक्षेत्र की प्राथमिकताएँ
- स्थापित m2e एक्सटेंशन
- [एम 2 ए 1.1+] मावेन प्लगइन द्वारा प्रदत्त जीवनचक्र मैपिंग मेटाडेटा
- डिफ़ॉल्ट जीवनचक्र मानचित्रण मेटाडाटा को m2e के साथ भेज दिया गया
1,2 का तात्पर्य आपकी pom फ़ाइल या इसके किसी भी अभिभावक के टैग में pluginManagement अनुभाग निर्दिष्ट करना है। एम 2 ई इस विन्यास को प्रोजेक्ट को कॉन्फ़िगर करने के लिए पढ़ता है। बेलो स्निपेट ने यूकेमपोर-मावेन -प्लगइन के लक्ष्यों jslint
और compress
लक्ष्यों को अनदेखा करने के लिए एम 2 को निर्देश दिया।
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings
only. It has no influence on the Maven build itself. -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<versionRange>[1.0,)</versionRange>
<goals>
<goal>compress</goal>
<goal>jslint</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
3) यदि आप इस मेटाडेटा के साथ अपनी पोम फ़ाइल को प्रदूषित करना पसंद नहीं करते हैं, तो आप इसे बाहरी एक्सएमएल फ़ाइल (विकल्प 3) में संग्रहीत कर सकते हैं। नीचे एक नमूना मैपिंग फ़ाइल है जो यूकेमप्रेस-मावेन -प्लगइन के लक्ष्यों jslint
और compress
लक्ष्यों को अनदेखा करने के लिए एम 2 को निर्देश देती है
<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<versionRange>[1.0,)</versionRange>
<goals>
<goal>compress</goal>
<goal>jslint</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore/>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
4) यदि आप इन 3 विकल्पों में से किसी को भी पसंद नहीं करते हैं, तो आप मावेन प्लगइन के लिए एक एम 2 कनेक्टर (एक्सटेंशन) का उपयोग कर सकते हैं। कनेक्टर बदले में मेटा को मेटा को प्रदान करेगा। आप इस लिंक पर कनेक्टर के भीतर मेटाडेटा जानकारी का एक उदाहरण देख सकते हैं । आपने देखा होगा कि मेटाडेटा एक विन्यासकर्ता को संदर्भित करता है। इसका सीधा सा मतलब है कि m2e एक्सटेंशन लेखक द्वारा आपूर्ति की गई उस विशेष जावा वर्ग को जिम्मेदारी सौंपेगा। विन्यासक परियोजना को कॉन्फ़िगर कर सकता है (जैसे कि अतिरिक्त स्रोत फ़ोल्डर आदि जोड़ें) और तय करें कि एक वृद्धिशील निर्माण के दौरान वास्तविक मावेन प्लगइन को निष्पादित करना है (यदि विन्यासक के भीतर ठीक से प्रबंधित नहीं होने पर, यह अंतहीन प्रोजेक्ट बिल्ड हो सकता है)
Configuratior ( link1 , link2 ) के एक उदाहरण के लिए इन लिंक को देखें । तो अगर प्लगइन कुछ ऐसा है जिसे बाहरी कनेक्टर के माध्यम से प्रबंधित किया जा सकता है तो आप इसे स्थापित कर सकते हैं। एम 2 अन्य डेवलपर्स द्वारा योगदान किए गए ऐसे कनेक्टर्स की एक सूची रखता है। इसे डिस्कवरी कैटलॉग के रूप में जाना जाता है। यदि आप पहले से ही किसी भी विकल्प (1-6) के माध्यम से निष्पादन के लिए कोई जीवन चक्र मैपिंग मेटाडाटा नहीं है, तो m2e आपको एक कनेक्टर स्थापित करने के लिए संकेत देगा और डिस्कवरी कैटलॉग को कुछ एक्सटेंशन मिला है जो निष्पादन का प्रबंधन कर सकता है।
नीचे दी गई छवि दिखाती है कि बिल्ड-हेल्पर-मावेन-प्लगइन के लिए कनेक्टर स्थापित करने के लिए एम 2 आपको कैसे संकेत देता है।
।
5) m2e मर्व-प्लगइन के भीतर वृद्धिशील निर्माण और आपूर्ति जीवन चक्र मानचित्रण का समर्थन करने के लिए प्लगइन लेखकों को प्रोत्साहित करता है। इसका मतलब यह होगा कि उपयोगकर्ताओं को किसी भी अतिरिक्त जीवनचक्र मैपिंग या कनेक्टर्स का उपयोग नहीं करना होगा। कुछ प्लगइन लेखक पहले ही इसे लागू कर चुके हैं
6) डिफ़ॉल्ट रूप से m2e में मावेन-कंपाइलर-प्लगइन और कई अन्य जैसे आमतौर पर उपयोग किए जाने वाले प्लगइन्स के लिए जीवनचक्र मैपिंग मेटाडाटा होता है।
अब वापस इस प्रश्न पर: आप शायद उस विशिष्ट लक्ष्य के लिए 1, 2 या 3 में एक अनदेखा जीवन चक्र मानचित्रण प्रदान कर सकते हैं जो आपके लिए परेशानी पैदा कर रहा है।