अपाचे मावेन: Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Software tool for managing build dependencies}} {{Infobox software | name = Apache Maven | logo = Apache Maven logo.svg | developer = The Apache Software...")
 
No edit summary
Line 1: Line 1:
{{Short description|Software tool for managing build dependencies}}
{{Short description|Software tool for managing build dependencies}}
{{Infobox software
{{Infobox software
| name = Apache Maven
| name = अपाचे मावेन
| logo = Apache Maven logo.svg
| logo = Apache Maven logo.svg
| developer = [[The Apache Software Foundation]]
| developer = [[अपाचे सॉफ्टवेयर फाउंडेशन]]
| released = {{Start date and age|df=yes|2004|07|13}}
| released = {{Start date and age|df=yes|2004|07|13}}
| discontinued = No
| discontinued = No
| latest release version = 3.9.2
| latest release version = 3.9.2
| latest release date = {{Start date and age|df=yes|2023|05|11}}<ref>{{Cite web|url=https://maven.apache.org/docs/3.9.2/release-notes.html|title=Maven Release Notes – Maven 3.9.2|website=maven.apache.org}}</ref>
| latest release date = {{Start date and age|df=yes|2023|05|11}}<ref>{{Cite web|url=https://maven.apache.org/docs/3.9.2/release-notes.html|title=Maven Release Notes – Maven 3.9.2|website=maven.apache.org}}</ref>
| programming language = [[Java (programming language)|Java]]
| programming language = [[जावा (प्रोग्रामिंग भाषा)|जावा]]
| genre = [[Build tool]]
| genre = [[उपकरण]]
| license = [[Apache License 2.0]]
| license = [[अपाचे लाइसेंस 2.0]]
| website = {{URL|https://maven.apache.org}}
| website = {{URL|https://maven.apache.org}}
}}
}}
मेवेन एक [[ स्वचालन का निर्माण करें ]] टूल है जिसका उपयोग मुख्य रूप से [[जावा (प्रोग्रामिंग भाषा)]] परियोजनाओं के लिए किया जाता है। मेवेन का उपयोग सी शार्प (प्रोग्रामिंग भाषा)|सी#, [[रूबी (प्रोग्रामिंग भाषा)]], [[स्काला (प्रोग्रामिंग भाषा)]] और अन्य भाषाओं में लिखी गई परियोजनाओं को बनाने और प्रबंधित करने के लिए भी किया जा सकता है। मावेन प्रोजेक्ट को [[अपाचे सॉफ्टवेयर फाउंडेशन]] द्वारा होस्ट किया गया है, जहां यह पहले [[जकार्ता प्रोजेक्ट]] का हिस्सा था।


मेवेन बिल्डिंग [[सॉफ्टवेयर निर्माण]] दो पहलुओं को संबोधित करता है: सॉफ्टवेयर का निर्माण कैसे होता है और इसकी निर्भरताएं। [[अपाचे चींटी]] जैसे पुराने टूल के विपरीत, यह निर्माण प्रक्रिया के लिए कन्वेंशन का उपयोग करता है। केवल अपवाद निर्दिष्ट करने की आवश्यकता है. एक [[XML]] फ़ाइल बनाए जा रहे सॉफ़्टवेयर प्रोजेक्ट, अन्य बाहरी मॉड्यूल और घटकों पर इसकी निर्भरता, बिल्ड ऑर्डर, निर्देशिकाओं और आवश्यक [[प्लग-इन (कंप्यूटिंग)]]|प्लग-इन का वर्णन करती है। यह कोड के संकलन और इसकी पैकेजिंग जैसे कुछ अच्छी तरह से परिभाषित कार्यों को करने के लिए पूर्व-निर्धारित लक्ष्यों के साथ आता है। मेवेन गतिशील रूप से जावा (प्रोग्रामिंग भाषा) लाइब्रेरीज़ और मेवेन प्लग-इन को मेवेन 2 सेंट्रल रिपॉजिटरी जैसे एक या अधिक रिपॉजिटरी से डाउनलोड करता है, और उन्हें स्थानीय कैश में संग्रहीत करता है।<ref name="maven2repo">{{cite web|url=http://repo1.maven.org/maven2/|title=Index of /maven2/|access-date=2009-04-15|archive-url=https://web.archive.org/web/20180917061140/http://repo1.maven.org/maven2/|archive-date=2018-09-17|url-status=dead}}</ref> डाउनलोड किए गए [[ विरूपण साक्ष्य (सॉफ्टवेयर विकास) ]] के इस स्थानीय कैश को स्थानीय परियोजनाओं द्वारा बनाई गई कलाकृतियों के साथ भी अपडेट किया जा सकता है। सार्वजनिक रिपॉजिटरी को भी अद्यतन किया जा सकता है।
'''अपाचे मावेन''' एक बिल्ड ऑटोमेशन टूल है जिसका उपयोग मुख्य रूप से [[जावा (प्रोग्रामिंग भाषा)|जावा]] प्रोजेक्ट्स के लिए किया जाता है। मेवेन का उपयोग सी#, [[रूबी (प्रोग्रामिंग भाषा)|रूबी]], [[स्काला (प्रोग्रामिंग भाषा)|स्काला]] और अन्य भाषाओं में लिखी गई परियोजनाओं को बनाने और प्रबंधित करने के लिए भी किया जा सकता है। मावेन प्रोजेक्ट को [[अपाचे सॉफ्टवेयर फाउंडेशन]] द्वारा होस्ट किया गया है, जहां यह पहले जकार्ता प्रोजेक्ट का हिस्सा था।


मेवेन को एक प्लगइन-आधारित आर्किटेक्चर का उपयोग करके बनाया गया है जो इसे मानक इनपुट के माध्यम से नियंत्रित किसी भी एप्लिकेशन का उपयोग करने की अनुमति देता है। मेवेन 2 के लिए ए [[सी (प्रोग्रामिंग भाषा)]]/[[सी++]] मूल प्लगइन बनाए रखा गया है।<ref>{{cite web|url=http://www.mojohaus.org/maven-native/native-maven-plugin/|title=मोजोहॉस नेटिव मावेन प्लगइन|first=Trygve|last=Laugstol}}</ref>
मावेन बिल्डिंग सॉफ्टवेयर के दो पहलुओं को संबोधित करता है: सॉफ्टवेयर कैसे बनाया जाता है और इसकी निर्भरताएँ [[अपाचे चींटी|अपाचे]] एंट जैसे पुराने टूल के विपरीत, यह निर्माण प्रक्रिया के लिए कन्वेंशन का उपयोग करता है। केवल अपवाद निर्दिष्ट करने की आवश्यकता है. एक [[XML|एक्सएमएल]] फ़ाइल बनाए जा रहे सॉफ़्टवेयर प्रोजेक्ट, अन्य बाहरी मॉड्यूल और घटकों पर इसकी निर्भरता, बिल्ड ऑर्डर, निर्देशिका और आवश्यक प्लग-इन का वर्णन करती है। यह कोड के संकलन और इसकी पैकेजिंग जैसे कुछ अच्छी तरह से परिभाषित कार्यों को करने के लिए पूर्व-निर्धारित लक्ष्यों के साथ आता है। मेवेन गतिशील रूप से एक या अधिक रिपॉजिटरी जैसे मेवेन 2 सेंट्रल रिपोजिटरी से जावा लाइब्रेरी और मेवेन प्लग-इन डाउनलोड करता है, और उन्हें स्थानीय कैश में संग्रहीत करता है।<ref name="maven2repo">{{cite web|url=http://repo1.maven.org/maven2/|title=Index of /maven2/|access-date=2009-04-15|archive-url=https://web.archive.org/web/20180917061140/http://repo1.maven.org/maven2/|archive-date=2018-09-17|url-status=dead}}</ref> डाउनलोड की गई कलाकृतियों के इस स्थानीय कैश को स्थानीय परियोजनाओं द्वारा बनाई गई कलाकृतियों के साथ भी अद्यतन किया जा सकता है। सार्वजनिक रिपॉजिटरी को भी अद्यतन किया जा सकता है।
बिल्ड टूल के रूप में [[ग्रैडल]] और [[एसबीटी]] जैसी वैकल्पिक प्रौद्योगिकियां एक्सएमएल पर निर्भर नहीं हैं, लेकिन मावेन द्वारा पेश की गई प्रमुख अवधारणाओं को बरकरार रखती हैं। [[अपाचे आइवी]] के साथ, एक समर्पित निर्भरता प्रबंधक भी विकसित किया गया था जो मावेन रिपॉजिटरी का भी समर्थन करता है।<ref>{{Cite web|url=https://ant.apache.org/ivy/history/2.2.0/resolver/ibiblio.html|title=IBiblio Resolver &#124; Apache Ivy™}}</ref>
अपाचे मावेन को प्रतिलिपि प्रस्तुत करने योग्य बिल्ड के लिए समर्थन प्राप्त है।<ref>{{Cite web|url=https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=74682318|title=Reproducible/Verifiable Builds - Apache Maven - Apache Software Foundation|website=cwiki.apache.org}}</ref><ref>{{Cite web|url=https://dzone.com/articles/reproducible-builds-in-java|title=जावा में प्रतिलिपि प्रस्तुत करने योग्य बिल्ड - डीज़ोन जावा|website=dzone.com}}</ref>


मेवेन को एक प्लगइन-आधारित आर्किटेक्चर का उपयोग करके बनाया गया है जो इसे मानक इनपुट के माध्यम से नियंत्रित किसी भी एप्लिकेशन का उपयोग करने की अनुमति देता है। मेवेन 2 के लिए [[सी (प्रोग्रामिंग भाषा)]]/[[सी++]] नेटिव प्लगइन बनाए रखा गया है।<ref>{{cite web|url=http://www.mojohaus.org/maven-native/native-maven-plugin/|title=मोजोहॉस नेटिव मावेन प्लगइन|first=Trygve|last=Laugstol}}</ref>


बिल्ड टूल के रूप में ग्रैडल और [[एसबीटी]] जैसी वैकल्पिक प्रौद्योगिकियां एक्सएमएल पर निर्भर नहीं हैं, लेकिन मावेन द्वारा पेश की गई प्रमुख अवधारणाओं को बरकरार रखती हैं। [[अपाचे आइवी]] के साथ, एक समर्पित निर्भरता प्रबंधक भी विकसित किया गया था जो मावेन रिपॉजिटरी का भी समर्थन करता है।<ref>{{Cite web|url=https://ant.apache.org/ivy/history/2.2.0/resolver/ibiblio.html|title=IBiblio Resolver &#124; Apache Ivy™}}</ref> अपाचे मावेन को प्रतिलिपि प्रस्तुत करने योग्य बिल्ड के लिए समर्थन प्राप्त है।<ref>{{Cite web|url=https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=74682318|title=Reproducible/Verifiable Builds - Apache Maven - Apache Software Foundation|website=cwiki.apache.org}}</ref><ref>{{Cite web|url=https://dzone.com/articles/reproducible-builds-in-java|title=जावा में प्रतिलिपि प्रस्तुत करने योग्य बिल्ड - डीज़ोन जावा|website=dzone.com}}</ref>
== इतिहास ==
== इतिहास ==
[[File:Maven repository artifact growth.png|thumb|मावेन केंद्रीय भंडार पर कलाकृतियों की संख्या तेजी से बढ़ी है]]जेसन वैन ज़ाइल द्वारा निर्मित मावेन, 2002 में [[अपाचे टर्बाइन]] की एक उप-परियोजना के रूप में शुरू हुई। 2003 में, इस पर मतदान हुआ और इसे शीर्ष स्तर की [[अपाचे सॉफ्टवेयर फाउंडेशन]] परियोजना के रूप में स्वीकार किया गया। जुलाई 2004 में, मावेन की रिलीज़ महत्वपूर्ण पहला मील का पत्थर थी, v1.0। बीटा चक्रों में लगभग छह महीने के बाद अक्टूबर 2005 में मेवेन 2 को v2.0 घोषित किया गया था। मेवेन 3.0 को अक्टूबर 2010 में रिलीज़ किया गया था जो कि ज्यादातर मेवेन 2 के साथ बैकवर्ड संगत था।
[[File:Maven repository artifact growth.png|thumb|मावेन केंद्रीय भंडार पर कलाकृतियों की संख्या तेजी से बढ़ी है]]जेसन वैन ज़ाइल द्वारा निर्मित मावेन, 2002 में [[अपाचे टर्बाइन]] की एक उप-परियोजना के रूप में शुरू हुई। 2003 में, इस पर मतदान हुआ और इसे शीर्ष स्तर की [[अपाचे सॉफ्टवेयर फाउंडेशन]] परियोजना के रूप में स्वीकार किया गया। जुलाई 2004 में, मावेन की रिलीज़ महत्वपूर्ण पहला मील का पत्थर थी, v1.0। बीटा चक्रों में लगभग छह महीने के बाद अक्टूबर 2005 में मेवेन 2 को वी 2.0 घोषित किया गया था। मेवेन 3.0 को अक्टूबर 2010 में रिलीज़ किया गया था जो कि अधिकांश मेवेन 2 के साथ बैकवर्ड संगत था।


मेवेन 3.0 की जानकारी 2008 में बाहर आना शुरू हुई। आठ अल्फा रिलीज के बाद, मेवेन 3.0 का पहला बीटा संस्करण अप्रैल 2010 में जारी किया गया था। मेवेन 3.0 ने कोर प्रोजेक्ट बिल्डर इंफ्रास्ट्रक्चर को फिर से तैयार किया है जिसके परिणामस्वरूप पीओएम की फ़ाइल-आधारित प्रतिनिधित्व को इसके इन-से अलग कर दिया गया है। स्मृति वस्तु प्रतिनिधित्व। इसने गैर-एक्सएमएल आधारित प्रोजेक्ट परिभाषा फ़ाइलों का लाभ उठाने के लिए मेवेन 3.0 ऐड-ऑन की संभावना का विस्तार किया है। सुझाई गई भाषाओं में रूबी (प्रोग्रामिंग भाषा) (पहले से ही जेसन वैन ज़िल द्वारा निजी प्रोटोटाइप में), [[वाईएएमएल]], और [[ग्रूवी (प्रोग्रामिंग भाषा)]] शामिल हैं।
मेवेन 3.0 की जानकारी 2008 में बाहर आना शुरू हुई। आठ अल्फा रिलीज के बाद, मेवेन 3.0 का पहला बीटा संस्करण अप्रैल 2010 में जारी किया गया था। मेवेन 3.0 ने कोर प्रोजेक्ट बिल्डर इंफ्रास्ट्रक्चर को फिर से तैयार किया है जिसके परिणामस्वरूप पीओएम की फ़ाइल-आधारित प्रतिनिधित्व को इसके इन-से अलग कर दिया गया है। स्मृति वस्तु प्रतिनिधित्व। इसने गैर-एक्सएमएल आधारित प्रोजेक्ट परिभाषा फ़ाइलों का लाभ उठाने के लिए मेवेन 3.0 ऐड-ऑन की संभावना का विस्तार किया है। सुझाई गई भाषाओं में रूबी (पहले से ही जेसन वैन ज़ाइल द्वारा निजी प्रोटोटाइप में), [[वाईएएमएल]]और [[ग्रूवी (प्रोग्रामिंग भाषा)|ग्रूवी]] सम्मिलित हैं।


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


== सिंटेक्स ==
== सिंटेक्स ==
मेवेन प्रोजेक्ट्स को [[प्रोजेक्ट ऑब्जेक्ट मॉडल]]|प्रोजेक्ट ऑब्जेक्ट मॉडल (POM) का उपयोग करके कॉन्फ़िगर किया गया है, जो इसमें संग्रहीत है <code>pom.xml</code>-फ़ाइल। एक उदाहरण फ़ाइल इस प्रकार दिखती है:
मावेन प्रोजेक्ट्स को [[प्रोजेक्ट ऑब्जेक्ट मॉडल]] (पीओम) का उपयोग करके कॉन्फ़िगर किया गया है, जो एक <code>pom.एक्सएमएल</code> फ़ाइल में संग्रहीत है। एक उदाहरण फ़ाइल इस प्रकार दिखती है:


<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
Line 53: Line 52:
</project>
</project>
</syntaxhighlight>
</syntaxhighlight>
यह POM केवल प्रोजेक्ट (निर्देशांक) के लिए एक अद्वितीय पहचानकर्ता और [[JUnit]] ढांचे पर इसकी निर्भरता को परिभाषित करता है। हालाँकि, यह परियोजना के निर्माण और परियोजना से जुड़े यूनिट परीक्षण को चलाने के लिए पहले से ही पर्याप्त है। मेवेन कॉन्फ़िगरेशन पर कन्वेंशन के विचार को अपनाकर इसे पूरा करता है, अर्थात, मेवेन प्रोजेक्ट के कॉन्फ़िगरेशन के लिए डिफ़ॉल्ट मान प्रदान करता है।
यह पीओम केवल प्रोजेक्ट (निर्देशांक) के लिए एक अद्वितीय पहचानकर्ता और <code>JUnit</code> संरचना पर इसकी निर्भरता को परिभाषित करता है। हालाँकि यह प्रोजेक्ट बनाने और प्रोजेक्ट से जुड़े यूनिट परीक्षण चलाने के लिए पहले से ही पर्याप्त है। मेवेन कॉन्फ़िगरेशन पर कन्वेंशन के विचार को अपनाकर इसे पूरा करता है, अर्थात, मेवेन प्रोजेक्ट के कॉन्फ़िगरेशन के लिए डिफ़ॉल्ट मान प्रदान करता है।


सामान्य प्रोग्रामिंग मुहावरे मेवेन प्रोजेक्ट की निर्देशिका संरचना में निम्नलिखित निर्देशिका प्रविष्टियाँ हैं:
एक सामान्य मुहावरेदार मावेन प्रोजेक्ट की निर्देशिका संरचना में निम्नलिखित निर्देशिका प्रविष्टियाँ होती हैं:
[[file:Maven CoC.svg|thumb|जावा प्रोजेक्ट के लिए एक निर्देशिका संरचना मावेन द्वारा स्वतः उत्पन्न होती है]]
[[file:Maven CoC.svg|thumb|जावा प्रोजेक्ट के लिए एक निर्देशिका संरचना मावेन द्वारा स्वतः उत्पन्न होती है]]
{| class="wikitable"
{| class="wikitable"
|-
|-
! Directory name
! निर्देशिका का नाम
! Purpose
! Purpose
|-
|-
| project home
| <code>project_home</code>
| Contains the pom.xml and all subdirectories.
|इसमें <code>pom.</code>एक्सएमएल और सभी उपनिर्देशिकाएँ सम्मिलित हैं।
|-
|-
| src/main/java
| <code>src/main/java</code>
| Contains the deliverable Java sourcecode for the project.
|प्रोजेक्ट के लिए डिलिवरेबल जावा सोर्सकोड सम्मिलित है।
|-
|-
| src/main/resources
| <code>src/main/resources</code>
| Contains the deliverable resources for the project, such as property files.
|इसमें परियोजना के लिए संपत्ति फ़ाइलें जैसे वितरण योग्य संसाधन सम्मिलित हैं।
|-
|-
| src/test/java
| <code>src/test/java</code>
| Contains the testing Java sourcecode (JUnit or TestNG test cases, for example) for the project.
|प्रोजेक्ट के लिए परीक्षण जावा सोर्सकोड (उदाहरण के लिए <code>JUnit</code> या <code>TestNG</code> परीक्षण मामले) सम्मिलित हैं।
|-
|-
| src/test/resources
| <code>src/test/resources</code>
| Contains resources necessary for testing.
|परीक्षण के लिए आवश्यक संसाधन सम्मिलित हैं।
|}
|}
आदेश <code>mvn package</code> सभी जावा फ़ाइलों को संकलित करेगा, कोई भी परीक्षण चलाएगा, और वितरण योग्य कोड और संसाधनों को पैकेज करेगा <code>target/my-app-1.0.jar</code> (यह मानते हुए कि artifactId मेरा ऐप है और संस्करण 1.0 है।)
आदेश <code>mvn package</code> सभी जावा फ़ाइलों को संकलित करेगा, कोई भी परीक्षण चलाएगा, और वितरण योग्य कोड और संसाधनों को पैकेज करेगा <code>target/my-app-1.0.jar</code> (यह मानते हुए कि <code>artifactId</code> मेरा ऐप है और संस्करण 1.0 है।)


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


== डिज़ाइन ==
== डिज़ाइन ==


=== प्रोजेक्ट ऑब्जेक्ट मॉडल ===
=== प्रोजेक्ट ऑब्जेक्ट मॉडल ===
एक प्रोजेक्ट ऑब्जेक्ट मॉडल (POM) <ref>[https://maven.apache.org/pom.html POM Reference]
एक प्रोजेक्ट ऑब्जेक्ट मॉडल (पीओएम) एक ही प्रोजेक्ट के लिए सभी कॉन्फ़िगरेशन प्रदान करता है।<ref>[https://maven.apache.org/pom.html POM Reference]
</ref> एक ही प्रोजेक्ट के लिए सभी कॉन्फ़िगरेशन प्रदान करता है। सामान्य कॉन्फ़िगरेशन में प्रोजेक्ट का नाम, उसके मालिक और अन्य प्रोजेक्ट पर उसकी निर्भरता शामिल होती है। कोई व्यक्ति निर्माण प्रक्रिया के अलग-अलग चरणों को भी कॉन्फ़िगर कर सकता है, जिन्हें प्लग-इन (कंप्यूटिंग) के रूप में कार्यान्वित किया जाता है। उदाहरण के लिए, कोई संकलन के लिए जावा संस्करण 1.5 का उपयोग करने के लिए कंपाइलर-प्लगइन को कॉन्फ़िगर कर सकता है, या कुछ यूनिट परीक्षण विफल होने पर भी प्रोजेक्ट की पैकेजिंग निर्दिष्ट कर सकता है।
</ref> सामान्य कॉन्फ़िगरेशन में प्रोजेक्ट का नाम, उसके मालिक और अन्य प्रोजेक्ट पर उसकी निर्भरता सम्मिलित होती है। कोई व्यक्ति निर्माण प्रक्रिया के अलग-अलग चरणों को भी कॉन्फ़िगर कर सकता है, जिन्हें प्लगइन के रूप में कार्यान्वित किया जाता है। उदाहरण के लिए, कोई संकलन के लिए जावा संस्करण 1.5 का उपयोग करने के लिए कंपाइलर-प्लगइन को कॉन्फ़िगर कर सकता है या कुछ यूनिट परीक्षण विफल होने पर भी प्रोजेक्ट की पैकेजिंग निर्दिष्ट कर सकता है।


बड़ी परियोजनाओं को कई मॉड्यूल या उप-परियोजनाओं में विभाजित किया जाना चाहिए, जिनमें से प्रत्येक का अपना पीओएम हो। फिर कोई एक रूट पीओएम लिख सकता है जिसके माध्यम से कोई एक ही कमांड के साथ सभी मॉड्यूल संकलित कर सकता है। पीओएम अन्य पीओएम से कॉन्फ़िगरेशन भी प्राप्त कर सकते हैं। सभी POMs सुपर POM से प्राप्त होते हैं<ref>[https://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Super_POM Super POM]
बड़ी परियोजनाओं को कई मॉड्यूल या उप-परियोजनाओं में विभाजित किया जाना चाहिए, जिनमें से प्रत्येक का अपना पीओएम हो। फिर कोई एक रूट पीओएम लिख सकता है जिसके माध्यम से कोई एक ही कमांड के साथ सभी मॉड्यूल संकलित कर सकता है। पीओएम अन्य पीओएम से कॉन्फ़िगरेशन भी प्राप्त कर सकते हैं। सभी पीओएम डिफ़ॉल्ट रूप से सुपर पीओएम से प्राप्त होते हैं। सुपर पीओएम डिफ़ॉल्ट कॉन्फ़िगरेशन प्रदान करता है, जैसे डिफ़ॉल्ट स्रोत निर्देशिकाएं, डिफ़ॉल्ट प्लगइन्स इत्यादि।<ref>[https://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Super_POM Super POM]
</ref> डिफ़ॉल्ट रूप से। सुपर पीओएम डिफ़ॉल्ट कॉन्फ़िगरेशन प्रदान करता है, जैसे डिफ़ॉल्ट स्रोत निर्देशिकाएं, डिफ़ॉल्ट प्लगइन्स इत्यादि।
</ref>


=== प्लग-इन ===
=== प्लग-इन ===
मेवेन की अधिकांश कार्यक्षमता प्लग-इन (कंप्यूटिंग)|प्लग-इन में है। एक प्लगइन लक्ष्यों का एक सेट प्रदान करता है जिसे कमांड का उपयोग करके निष्पादित किया जा सकता है <code>mvn [plugin-name]:[goal-name]</code>. उदाहरण के लिए, एक जावा प्रोजेक्ट को कंपाइलर-प्लगइन के कंपाइल-लक्ष्य के साथ संकलित किया जा सकता है<ref>{{cite web|url=https://maven.apache.org/plugins/maven-compiler-plugin/|title=Apache Maven Compiler Plugin – Introduction|first=Edwin|last=Punzalan}}</ref> चलाकर <code>mvn compiler:compile</code>.
मेवेन की अधिकांश कार्यक्षमता प्लग-इन में है। एक प्लगइन लक्ष्यों का एक सेट प्रदान करता है जिसे कमांड <code>mvn [plugin-name]:[goal-name]</code> का उपयोग करके निष्पादित किया जा सकता है। उदाहरण के लिए, एक जावा प्रोजेक्ट को <code>mvn compiler:compile</code> चलाकर कंपाइलर-प्लगइन के कंपाइल-लक्ष्य के साथ संकलित किया जा सकता है।<ref>{{cite web|url=https://maven.apache.org/plugins/maven-compiler-plugin/|title=Apache Maven Compiler Plugin – Introduction|first=Edwin|last=Punzalan}}</ref>


निर्माण, परीक्षण, स्रोत नियंत्रण प्रबंधन, वेब सर्वर चलाने, एक्लिप्स (सॉफ़्टवेयर) प्रोजेक्ट फ़ाइलें उत्पन्न करने और बहुत कुछ के लिए मावेन प्लगइन्स हैं।<ref>{{cite web|url=https://maven.apache.org/plugins/index.html|title=Maven – Available Plugins|first=Brett Porter Jason van Zyl Dennis Lundberg Olivier Lamy Benson Margulies Karl-Heinz|last=Marbaise}}</ref> प्लगइन्स को <प्लगइन्स>-सेक्शन में पेश और कॉन्फ़िगर किया जाता है <code>pom.xml</code> फ़ाइल। प्रत्येक प्रोजेक्ट में कुछ बुनियादी प्लगइन्स डिफ़ॉल्ट रूप से शामिल होते हैं, और उनमें समझदार डिफ़ॉल्ट सेटिंग्स होती हैं।
निर्माण, परीक्षण, स्रोत नियंत्रण प्रबंधन, वेब सर्वर चलाने, एक्लिप्स प्रोजेक्ट फ़ाइलें उत्पन्न करने और बहुत कुछ के लिए मावेन प्लगइन्स हैं।<ref>{{cite web|url=https://maven.apache.org/plugins/index.html|title=Maven – Available Plugins|first=Brett Porter Jason van Zyl Dennis Lundberg Olivier Lamy Benson Margulies Karl-Heinz|last=Marbaise}}</ref> प्लगइन्स को <code>pom.एक्सएमएल</code> फ़ाइल के <प्लगइन्स>-सेक्शन में पेश और कॉन्फ़िगर किया जाता है। प्रत्येक प्रोजेक्ट में कुछ बुनियादी प्लगइन्स डिफ़ॉल्ट रूप से सम्मिलित होते हैं, और उनमें समझदार डिफ़ॉल्ट सेटिंग्स होती हैं।


हालाँकि, यह बोझिल होगा यदि किसी सॉफ़्टवेयर प्रोजेक्ट के निर्माण, परीक्षण और पैकेजिंग के मूल निर्माण क्रम में प्रत्येक संबंधित लक्ष्य को मैन्युअल रूप से चलाने की आवश्यकता हो:
हालाँकि, यह बोझिल होगा यदि किसी सॉफ़्टवेयर प्रोजेक्ट के निर्माण, परीक्षण और पैकेजिंग के मूल निर्माण क्रम में प्रत्येक संबंधित लक्ष्य को मैन्युअल रूप से चलाने की आवश्यकता हो:
Line 102: Line 101:
मावेन की जीवनचक्र अवधारणा इस मुद्दे को संभालती है।
मावेन की जीवनचक्र अवधारणा इस मुद्दे को संभालती है।


प्लगइन्स मावेन का विस्तार करने का प्राथमिक तरीका है। Maven प्लगइन का विकास org.apache.maven.plugin.AbstractMojo क्लास का विस्तार करके किया जा सकता है। एप्लिकेशन सर्वर चलाने वाली क्लाउड-आधारित वर्चुअल मशीन बनाने के लिए मावेन प्लगइन का उदाहरण कोड और स्पष्टीकरण क्लाउड वर्चुअल मशीनों के स्वचालित विकास और प्रबंधन लेख में दिया गया है।<ref>{{Cite journal| last=Amies| first=Alex|author2=Zou P X |author3=Wang Yi S | title=क्लाउड वर्चुअल मशीनों का स्वचालित विकास और प्रबंधन|journal=IBM DeveloperWorks|publisher=IBM|date=29 Oct 2011| url=http://www.ibm.com/developerworks/cloud/library/cl-automatecloud/index.html}}</ref>
प्लगइन्स मावेन का विस्तार करने का प्राथमिक तरीका है। Maven प्लगइन का विकास <code>org.apache.maven.plugin.AbstractMojo</code>क्लास का विस्तार करके किया जा सकता है। एप्लिकेशन सर्वर चलाने वाली क्लाउड-आधारित वर्चुअल मशीन बनाने के लिए मावेन प्लगइन का उदाहरण कोड और स्पष्टीकरण क्लाउड वर्चुअल मशीनों के स्वचालित विकास और प्रबंधन लेख में दिया गया है।<ref>{{Cite journal| last=Amies| first=Alex|author2=Zou P X |author3=Wang Yi S | title=क्लाउड वर्चुअल मशीनों का स्वचालित विकास और प्रबंधन|journal=IBM DeveloperWorks|publisher=IBM|date=29 Oct 2011| url=http://www.ibm.com/developerworks/cloud/library/cl-automatecloud/index.html}}</ref>
 
 
=== जीवनचक्र बनाएं ===
=== जीवनचक्र बनाएं ===
बिल्ड जीवनचक्र नामित चरणों की एक सूची है जिसका उपयोग लक्ष्य निष्पादन के लिए आदेश देने के लिए किया जा सकता है। मावेन के मानक जीवनचक्रों में से एक डिफ़ॉल्ट जीवनचक्र है, जिसमें इस क्रम में निम्नलिखित चरण शामिल हैं:<ref>{{cite web|url=https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference|title=Maven – Introduction to the Build Lifecycle|first=Brett|last=Porter}}</ref>
बिल्ड जीवनचक्र नामित चरणों की एक सूची है जिसका उपयोग लक्ष्य निष्पादन के लिए आदेश देने के लिए किया जा सकता है। मावेन के मानक जीवनचक्रों में से एक डिफ़ॉल्ट जीवनचक्र है, जिसमें इस क्रम में निम्नलिखित चरण सम्मिलित हैं:<ref>{{cite web|url=https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference|title=Maven – Introduction to the Build Lifecycle|first=Brett|last=Porter}}</ref>
* मान्य करें
* मान्य करें
*उत्पन्न-स्रोत
*उत्पन्न-स्रोत
Line 121: Line 118:
* तैनात करना
* तैनात करना


प्लगइन्स द्वारा प्रदान किए गए लक्ष्य जीवनचक्र के विभिन्न चरणों से जुड़े हो सकते हैं। उदाहरण के लिए, डिफ़ॉल्ट रूप से, लक्ष्य कंपाइलर: कंपाइल कंपाइल चरण से जुड़ा होता है, जबकि लक्ष्य अचूक: परीक्षण परीक्षण चरण से जुड़ा होता है। जब <code>mvn test</code> कमांड निष्पादित किया जाता है, मावेन परीक्षण चरण तक और इसमें शामिल प्रत्येक चरण से जुड़े सभी लक्ष्यों को चलाता है। ऐसे मामले में, मेवेन प्रक्रिया-संसाधन चरण से जुड़े संसाधन:संसाधन लक्ष्य को चलाता है, फिर कंपाइलर:संकलन करता है, और इसी तरह जब तक यह अंततः अचूक:परीक्षण लक्ष्य को नहीं चलाता।
प्लगइन्स द्वारा प्रदान किए गए लक्ष्य जीवनचक्र के विभिन्न चरणों से जुड़े हो सकते हैं। उदाहरण के लिए, डिफ़ॉल्ट रूप से, लक्ष्य "संकलक: संकलन" "संकलन" चरण से जुड़ा होता है, जबकि लक्ष्य "अचूक: परीक्षण" "परीक्षण" चरण से जुड़ा होता है। जब <code>mvn_test</code> कमांड निष्पादित किया जाता है, तो मावेन <code>test</code> चरण तक और इसमें सम्मिलित प्रत्येक चरण से जुड़े सभी लक्ष्यों को चलाता है। ऐसे मामले में, मावेन "प्रक्रिया-संसाधन" चरण से जुड़े "संसाधन:संसाधन" लक्ष्य को चलाता है, फिर "संकलक:संकलन" को चलाता है और इसी प्रकार जब तक यह अंततः "अचूक:परीक्षण" लक्ष्य को नहीं चलाता।


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


मानक जीवनचक्र किसी प्रोजेक्ट में नए उपयोगकर्ताओं को एकल आदेश जारी करके प्रत्येक मावेन प्रोजेक्ट को सटीक रूप से बनाने, परीक्षण करने और स्थापित करने की क्षमता प्रदान करता है <code>mvn install</code>. डिफ़ॉल्ट रूप से, मावेन POM फ़ाइल को जेनरेट की गई JAR और WAR फ़ाइलों में पैकेज करता है। Diet4j जैसे उपकरण<ref>{{cite web|url=http://diet4j.org/|title=diet4j - put Java JARs on a diet, and load maven modules as needed}}</ref> इस जानकारी का उपयोग रन-टाइम पर मावेन मॉड्यूल को पुनरावर्ती रूप से हल करने और चलाने के लिए एक uber -jar की आवश्यकता के बिना किया जा सकता है जिसमें सभी प्रोजेक्ट कोड शामिल हैं।
मानक जीवनचक्र किसी प्रोजेक्ट में नए उपयोगकर्ताओं को एकल कमांड <code>mvn_install</code> जारी करके प्रत्येक मावेन प्रोजेक्ट को सटीक रूप से बनाने, परीक्षण करने और स्थापित करने की क्षमता प्रदान करता है। डिफ़ॉल्ट रूप से, मावेन पीओम फ़ाइल को जेनरेट की गई JAR और WAR फ़ाइलों में पैकेज करता है। <code>Diet4j</code> जैसे उपकरण इस जानकारी का उपयोग रन-टाइम पर मावेन मॉड्यूल को पुनरावर्ती रूप से हल करने और चलाने के लिए कर सकते हैं, बिना <code>"uber" -jar</code>की आवश्यकता के जिसमें सभी प्रोजेक्ट कोड सम्मिलित हैं।<ref>{{cite web|url=http://diet4j.org/|title=diet4j - put Java JARs on a diet, and load maven modules as needed}}</ref>


===निर्भरताएँ ===
===निर्भरताएँ ===
मावेन में एक केंद्रीय विशेषता [[निर्भरता (परियोजना प्रबंधन)]] है। मावेन की निर्भरता-हैंडलिंग तंत्र को सॉफ़्टवेयर लाइब्रेरी या मॉड्यूल जैसी व्यक्तिगत कलाकृतियों की पहचान करने वाली एक समन्वय प्रणाली के आसपास व्यवस्थित किया गया है। उपरोक्त POM उदाहरण JUnit निर्देशांक को परियोजना की प्रत्यक्ष निर्भरता के रूप में संदर्भित करता है। एक प्रोजेक्ट जिसे [[हाइबरनेट (जावा)]] लाइब्रेरी की आवश्यकता होती है, उसे बस अपने पीओएम में हाइबरनेट के प्रोजेक्ट निर्देशांक घोषित करना होता है। मेवेन स्वचालित रूप से निर्भरता और उन निर्भरताओं को डाउनलोड करेगा जिनकी हाइबरनेट को स्वयं आवश्यकता है (जिन्हें ट्रांजिटिव निर्भरता कहा जाता है) और उन्हें उपयोगकर्ता के स्थानीय भंडार में संग्रहीत करेगा। मावेन 2 [https://search.maven.org/ सेंट्रल रिपोजिटरी]<ref name="maven2repo"/>पुस्तकालयों की खोज के लिए डिफ़ॉल्ट रूप से उपयोग किया जाता है, लेकिन कोई भी POM के भीतर उपयोग किए जाने वाले रिपॉजिटरी (उदाहरण के लिए, कंपनी-निजी रिपॉजिटरी) को कॉन्फ़िगर कर सकता है।
मावेन में एक केंद्रीय विशेषता निर्भरता प्रबंधन है। मावेन की निर्भरता-हैंडलिंग तंत्र को सॉफ़्टवेयर लाइब्रेरी या मॉड्यूल जैसी व्यक्तिगत कलाकृतियों की पहचान करने वाली एक समन्वय प्रणाली के आसपास व्यवस्थित किया जाता है। उपरोक्त पीओम उदाहरण <code>JUnit</code> निर्देशांक को परियोजना की प्रत्यक्ष निर्भरता के रूप में संदर्भित करता है। एक प्रोजेक्ट जिसे [[हाइबरनेट (जावा)]] लाइब्रेरी की आवश्यकता होती है, उसे बस अपने पीओएम में हाइबरनेट के प्रोजेक्ट निर्देशांक घोषित करना होता है। मेवेन स्वचालित रूप से निर्भरता और उन निर्भरताओं को डाउनलोड करेगा जिनकी हाइबरनेट को स्वयं आवश्यकता है (जिन्हें ट्रांजिटिव निर्भरता कहा जाता है) और उन्हें उपयोगकर्ता के स्थानीय भंडार में संग्रहीत करेगा। मेवेन 2 सेंट्रल रिपॉजिटरी का उपयोग डिफ़ॉल्ट रूप से पुस्तकालयों की खोज के लिए किया जाता है, लेकिन कोई पीओएम के भीतर उपयोग की जाने वाली रिपॉजिटरी (जैसे कंपनी-निजी रिपॉजिटरी) को कॉन्फ़िगर कर सकता है।<ref name="maven2repo"/>


मेवेन और एंट के बीच मूलभूत अंतर यह है कि मेवेन का डिज़ाइन सभी परियोजनाओं को एक निश्चित संरचना और समर्थित कार्य कार्य-प्रवाह का एक सेट मानता है (उदाहरण के लिए, स्रोत नियंत्रण से संसाधन प्राप्त करना, परियोजना को संकलित करना, इकाई परीक्षण इत्यादि)। जबकि अधिकांश सॉफ्टवेयर प्रोजेक्ट वास्तव में इन ऑपरेशनों का समर्थन करते हैं और वास्तव में एक अच्छी तरह से परिभाषित संरचना होती है, मेवेन के लिए आवश्यक है कि इस संरचना और ऑपरेशन कार्यान्वयन विवरण को पीओएम फ़ाइल में परिभाषित किया जाए। इस प्रकार, परियोजनाओं को कैसे परिभाषित किया जाए और आम तौर पर सभी परियोजनाओं में समर्थित कार्य-प्रवाह की सूची पर कॉन्फ़िगरेशन पर मावेन कन्वेंशन।<ref>{{cite web|title=Maven: The Complete Reference |url=http://www.sonatype.com/books/mvnref-book/reference/installation-sect-compare-ant-maven.html |publisher=Sonatype |access-date=11 April 2013 |url-status=dead |archive-url=https://web.archive.org/web/20130421060027/http://www.sonatype.com/books/mvnref-book/reference/installation-sect-compare-ant-maven.html |archive-date=21 April 2013 }}</ref>
मेवेन और एंट के बीच मूलभूत अंतर यह है कि मेवेन का डिज़ाइन सभी परियोजनाओं को एक निश्चित संरचना और समर्थित कार्य कार्य-प्रवाह का एक सेट मानता है उदाहरण के लिए, स्रोत नियंत्रण से संसाधन प्राप्त करना, परियोजना को संकलित करना, इकाई परीक्षण इत्यादि)। जबकि अधिकांश सॉफ्टवेयर प्रोजेक्ट वास्तव में इन ऑपरेशनों का समर्थन करते हैं और वास्तव में एक अच्छी तरह से परिभाषित संरचना होती है, मेवेन के लिए आवश्यक है कि इस संरचना और ऑपरेशन कार्यान्वयन विवरण को पीओएम फ़ाइल में परिभाषित किया जाए। इस प्रकार मावेन परियोजनाओं को परिभाषित करने के तरीके और कार्य-प्रवाह की सूची पर एक सम्मेलन पर निर्भर करता है जो सामान्यतः सभी परियोजनाओं में समर्थित होते हैं।<ref>{{cite web|title=Maven: The Complete Reference |url=http://www.sonatype.com/books/mvnref-book/reference/installation-sect-compare-ant-maven.html |publisher=Sonatype |access-date=11 April 2013 |url-status=dead |archive-url=https://web.archive.org/web/20130421060027/http://www.sonatype.com/books/mvnref-book/reference/installation-sect-compare-ant-maven.html |archive-date=21 April 2013 }}</ref><ref>[https://search.maven.org/ The Central Repository Search Engine]</ref>
सेंट्रल रिपॉजिटरी सर्च इंजन जैसे खोज इंजन हैं,<ref>[https://search.maven.org/ The Central Repository Search Engine]</ref> जिसका उपयोग विभिन्न ओपन-सोर्स लाइब्रेरी और फ्रेमवर्क के लिए निर्देशांक खोजने के लिए किया जा सकता है।


एक ही मशीन पर विकसित परियोजनाएं स्थानीय रिपॉजिटरी के माध्यम से एक-दूसरे पर निर्भर हो सकती हैं। स्थानीय रिपॉजिटरी एक सरल फ़ोल्डर संरचना है जो डाउनलोड की गई निर्भरता के लिए कैश के रूप में और स्थानीय रूप से निर्मित कलाकृतियों के लिए केंद्रीकृत भंडारण स्थान के रूप में कार्य करती है। मेवेन कमांड <code>mvn install</code> एक प्रोजेक्ट बनाता है और उसके बायनेरिज़ को स्थानीय रिपॉजिटरी में रखता है। फिर, अन्य परियोजनाएं अपने पीओएम में इसके निर्देशांक निर्दिष्ट करके इस परियोजना का उपयोग कर सकती हैं।
द सेंट्रल रिपॉजिटरी सर्च इंजन जैसे खोज इंजन हैं, जिनका उपयोग विभिन्न ओपन-सोर्स लाइब्रेरी और फ्रेमवर्क के लिए निर्देशांक खोजने के लिए किया जा सकता है।
 
एक ही मशीन पर विकसित परियोजनाएं स्थानीय रिपॉजिटरी के माध्यम से एक-दूसरे पर निर्भर हो सकती हैं। स्थानीय रिपॉजिटरी एक सरल फ़ोल्डर संरचना है जो डाउनलोड की गई निर्भरता के लिए कैश के रूप में और स्थानीय रूप से निर्मित कलाकृतियों के लिए केंद्रीकृत भंडारण स्थान के रूप में कार्य करती है। मावेन कमांड <code>mvn install</code> एक प्रोजेक्ट बनाता है और उसके बायनेरिज़ को स्थानीय रिपॉजिटरी में रखता है। फिर, अन्य परियोजनाएं अपने पीओएम में इसके निर्देशांक निर्दिष्ट करके इस परियोजना का उपयोग कर सकती हैं।


== अंतरसंचालनीयता ==
== अंतरसंचालनीयता ==
जावा प्रोग्रामिंग भाषा को लक्षित करने वाले कई लोकप्रिय एकीकृत विकास परिवेशों में ऐड-ऑन | एकीकृत विकास परिवेश (आईडीई) आईडीई के निर्माण तंत्र और स्रोत संपादन टूल के साथ मावेन का एकीकरण प्रदान करने के लिए मौजूद हैं, जिससे मावेन को आईडीई के भीतर से परियोजनाओं को संकलित करने की अनुमति मिलती है, और साथ ही कोड पूरा करने, कंपाइलर त्रुटियों को उजागर करने आदि के लिए क्लासपाथ सेट करें।
जावा प्रोग्रामिंग भाषा को लक्षित करने वाले कई लोकप्रिय एकीकृत विकास वातावरण (आईडीई) में ऐड-ऑन आईडीई के निर्माण तंत्र और स्रोत संपादन टूल के साथ मावेन का एकीकरण प्रदान करने के लिए सम्मिलित हैं, जिससे मावेन को आईडीई के भीतर से परियोजनाओं को संकलित करने और कोड के लिए क्लासपाथ सेट करने की भी अनुमति मिलती है। संकलक त्रुटियों आदि को उजागर करना पूरा करना।


मावेन के साथ विकास का समर्थन करने वाले लोकप्रिय आईडीई के उदाहरणों में शामिल हैं:
मावेन के साथ विकास का समर्थन करने वाले लोकप्रिय आईडीई के उदाहरणों में सम्मिलित हैं:


* ग्रहण (सॉफ्टवेयर)
* ग्रहण (सॉफ्टवेयर)
Line 150: Line 148:
ये ऐड-ऑन सीधे आईडीई के भीतर किसी प्रोजेक्ट की निर्भरता के पूर्ण सेट को निर्धारित करने के लिए पीओएम को संपादित करने या पीओएम का उपयोग करने की क्षमता भी प्रदान करते हैं।
ये ऐड-ऑन सीधे आईडीई के भीतर किसी प्रोजेक्ट की निर्भरता के पूर्ण सेट को निर्धारित करने के लिए पीओएम को संपादित करने या पीओएम का उपयोग करने की क्षमता भी प्रदान करते हैं।


जब आईडीई अब संकलन नहीं करता है तो आईडीई की कुछ अंतर्निहित विशेषताएं समाप्त हो जाती हैं। उदाहरण के लिए, एक्लिप्स के जेडीटी में संपादित होने के बाद एकल जावा स्रोत फ़ाइल को पुन: संकलित करने की क्षमता है। कई आईडीई मावेन द्वारा पसंद किए गए फ़ोल्डरों के पदानुक्रम के बजाय परियोजनाओं के एक फ्लैट सेट के साथ काम करते हैं। यह मावेन का उपयोग करते समय आईडीई में [[सॉफ़्टवेयर कॉन्फ़िगरेशन प्रबंधन]] सिस्टम के उपयोग को जटिल बनाता है।<ref>{{cite web|url=https://maven.apache.org/eclipse-plugin.html |title=maven.apache.org/eclipse-plugin.html |url-status=dead |archive-url=https://web.archive.org/web/20150507014621/http://maven.apache.org/eclipse-plugin.html |archive-date=May 7, 2015 }}</ref><ref>{{cite web|url=http://www.jetbrains.com/idea/features/ant_maven.html#Maven_Integration|title=IntelliJ IDEA :: Features}}</ref><ref>{{cite web|url=http://wiki.netbeans.org/MavenBestPractices|title=MavenBestPractices - NetBeans Wiki}}</ref>
जब आईडीई अब संकलन नहीं करता है तो आईडीई की कुछ अंतर्निहित विशेषताएं समाप्त हो जाती हैं। उदाहरण के लिए, एक्लिप्स के जेडीटी में संपादित होने के बाद एकल जावा स्रोत फ़ाइल को पुन: संकलित करने की क्षमता है। कई आईडीई मावेन द्वारा पसंद किए गए फ़ोल्डरों के पदानुक्रम के बजाय परियोजनाओं के एक फ्लैट सेट के साथ कार्य करते हैं। यह मेवेन का उपयोग करते समय आईडीई में एससीएम सिस्टम के उपयोग को जटिल बनाता है।<ref>{{cite web|url=https://maven.apache.org/eclipse-plugin.html |title=maven.apache.org/eclipse-plugin.html |url-status=dead |archive-url=https://web.archive.org/web/20150507014621/http://maven.apache.org/eclipse-plugin.html |archive-date=May 7, 2015 }}</ref><ref>{{cite web|url=http://www.jetbrains.com/idea/features/ant_maven.html#Maven_Integration|title=IntelliJ IDEA :: Features}}</ref><ref>{{cite web|url=http://wiki.netbeans.org/MavenBestPractices|title=MavenBestPractices - NetBeans Wiki}}</ref>
 
 
== यह भी देखें ==
== यह भी देखें ==
{{Portal|Free and open-source software}}
{{Portal|Free and open-source software}}

Revision as of 20:31, 18 July 2023

अपाचे मावेन
Developer(s)अपाचे सॉफ्टवेयर फाउंडेशन
Initial release13 July 2004; 20 years ago (2004-07-13)
Stable release
3.9.2 / 11 May 2023; 18 months ago (2023-05-11)[1]
Written inजावा
Typeउपकरण
Licenseअपाचे लाइसेंस 2.0
Websitemaven.apache.org

अपाचे मावेन एक बिल्ड ऑटोमेशन टूल है जिसका उपयोग मुख्य रूप से जावा प्रोजेक्ट्स के लिए किया जाता है। मेवेन का उपयोग सी#, रूबी, स्काला और अन्य भाषाओं में लिखी गई परियोजनाओं को बनाने और प्रबंधित करने के लिए भी किया जा सकता है। मावेन प्रोजेक्ट को अपाचे सॉफ्टवेयर फाउंडेशन द्वारा होस्ट किया गया है, जहां यह पहले जकार्ता प्रोजेक्ट का हिस्सा था।

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

मेवेन को एक प्लगइन-आधारित आर्किटेक्चर का उपयोग करके बनाया गया है जो इसे मानक इनपुट के माध्यम से नियंत्रित किसी भी एप्लिकेशन का उपयोग करने की अनुमति देता है। मेवेन 2 के लिए सी (प्रोग्रामिंग भाषा)/सी++ नेटिव प्लगइन बनाए रखा गया है।[3]

बिल्ड टूल के रूप में ग्रैडल और एसबीटी जैसी वैकल्पिक प्रौद्योगिकियां एक्सएमएल पर निर्भर नहीं हैं, लेकिन मावेन द्वारा पेश की गई प्रमुख अवधारणाओं को बरकरार रखती हैं। अपाचे आइवी के साथ, एक समर्पित निर्भरता प्रबंधक भी विकसित किया गया था जो मावेन रिपॉजिटरी का भी समर्थन करता है।[4] अपाचे मावेन को प्रतिलिपि प्रस्तुत करने योग्य बिल्ड के लिए समर्थन प्राप्त है।[5][6]

इतिहास

मावेन केंद्रीय भंडार पर कलाकृतियों की संख्या तेजी से बढ़ी है

जेसन वैन ज़ाइल द्वारा निर्मित मावेन, 2002 में अपाचे टर्बाइन की एक उप-परियोजना के रूप में शुरू हुई। 2003 में, इस पर मतदान हुआ और इसे शीर्ष स्तर की अपाचे सॉफ्टवेयर फाउंडेशन परियोजना के रूप में स्वीकार किया गया। जुलाई 2004 में, मावेन की रिलीज़ महत्वपूर्ण पहला मील का पत्थर थी, v1.0। बीटा चक्रों में लगभग छह महीने के बाद अक्टूबर 2005 में मेवेन 2 को वी 2.0 घोषित किया गया था। मेवेन 3.0 को अक्टूबर 2010 में रिलीज़ किया गया था जो कि अधिकांश मेवेन 2 के साथ बैकवर्ड संगत था।

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

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

सिंटेक्स

मावेन प्रोजेक्ट्स को प्रोजेक्ट ऑब्जेक्ट मॉडल (पीओम) का उपयोग करके कॉन्फ़िगर किया गया है, जो एक pom.एक्सएमएल फ़ाइल में संग्रहीत है। एक उदाहरण फ़ाइल इस प्रकार दिखती है:

<project>
  <!-- model version is always 4.0.0 for Maven 2.x POMs -->
  <modelVersion>4.0.0</modelVersion>
  <!-- project coordinates, i.e. a group of values which uniquely identify this project -->
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0</version>
  <!-- library dependencies -->
  <dependencies>
    <dependency>
      <!-- coordinates of the required library -->
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <!-- this dependency is only used for running and compiling tests -->
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

यह पीओम केवल प्रोजेक्ट (निर्देशांक) के लिए एक अद्वितीय पहचानकर्ता और JUnit संरचना पर इसकी निर्भरता को परिभाषित करता है। हालाँकि यह प्रोजेक्ट बनाने और प्रोजेक्ट से जुड़े यूनिट परीक्षण चलाने के लिए पहले से ही पर्याप्त है। मेवेन कॉन्फ़िगरेशन पर कन्वेंशन के विचार को अपनाकर इसे पूरा करता है, अर्थात, मेवेन प्रोजेक्ट के कॉन्फ़िगरेशन के लिए डिफ़ॉल्ट मान प्रदान करता है।

एक सामान्य मुहावरेदार मावेन प्रोजेक्ट की निर्देशिका संरचना में निम्नलिखित निर्देशिका प्रविष्टियाँ होती हैं:

जावा प्रोजेक्ट के लिए एक निर्देशिका संरचना मावेन द्वारा स्वतः उत्पन्न होती है
निर्देशिका का नाम Purpose
project_home इसमें pom.एक्सएमएल और सभी उपनिर्देशिकाएँ सम्मिलित हैं।
src/main/java प्रोजेक्ट के लिए डिलिवरेबल जावा सोर्सकोड सम्मिलित है।
src/main/resources इसमें परियोजना के लिए संपत्ति फ़ाइलें जैसे वितरण योग्य संसाधन सम्मिलित हैं।
src/test/java प्रोजेक्ट के लिए परीक्षण जावा सोर्सकोड (उदाहरण के लिए JUnit या TestNG परीक्षण मामले) सम्मिलित हैं।
src/test/resources परीक्षण के लिए आवश्यक संसाधन सम्मिलित हैं।

आदेश mvn package सभी जावा फ़ाइलों को संकलित करेगा, कोई भी परीक्षण चलाएगा, और वितरण योग्य कोड और संसाधनों को पैकेज करेगा target/my-app-1.0.jar (यह मानते हुए कि artifactId मेरा ऐप है और संस्करण 1.0 है।)

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

डिज़ाइन

प्रोजेक्ट ऑब्जेक्ट मॉडल

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

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

प्लग-इन

मेवेन की अधिकांश कार्यक्षमता प्लग-इन में है। एक प्लगइन लक्ष्यों का एक सेट प्रदान करता है जिसे कमांड mvn [plugin-name]:[goal-name] का उपयोग करके निष्पादित किया जा सकता है। उदाहरण के लिए, एक जावा प्रोजेक्ट को mvn compiler:compile चलाकर कंपाइलर-प्लगइन के कंपाइल-लक्ष्य के साथ संकलित किया जा सकता है।[9]

निर्माण, परीक्षण, स्रोत नियंत्रण प्रबंधन, वेब सर्वर चलाने, एक्लिप्स प्रोजेक्ट फ़ाइलें उत्पन्न करने और बहुत कुछ के लिए मावेन प्लगइन्स हैं।[10] प्लगइन्स को pom.एक्सएमएल फ़ाइल के <प्लगइन्स>-सेक्शन में पेश और कॉन्फ़िगर किया जाता है। प्रत्येक प्रोजेक्ट में कुछ बुनियादी प्लगइन्स डिफ़ॉल्ट रूप से सम्मिलित होते हैं, और उनमें समझदार डिफ़ॉल्ट सेटिंग्स होती हैं।

हालाँकि, यह बोझिल होगा यदि किसी सॉफ़्टवेयर प्रोजेक्ट के निर्माण, परीक्षण और पैकेजिंग के मूल निर्माण क्रम में प्रत्येक संबंधित लक्ष्य को मैन्युअल रूप से चलाने की आवश्यकता हो:

  • mvn compiler:compile
  • mvn surefire:test
  • mvn jar:jar

मावेन की जीवनचक्र अवधारणा इस मुद्दे को संभालती है।

प्लगइन्स मावेन का विस्तार करने का प्राथमिक तरीका है। Maven प्लगइन का विकास org.apache.maven.plugin.AbstractMojoक्लास का विस्तार करके किया जा सकता है। एप्लिकेशन सर्वर चलाने वाली क्लाउड-आधारित वर्चुअल मशीन बनाने के लिए मावेन प्लगइन का उदाहरण कोड और स्पष्टीकरण क्लाउड वर्चुअल मशीनों के स्वचालित विकास और प्रबंधन लेख में दिया गया है।[11]

जीवनचक्र बनाएं

बिल्ड जीवनचक्र नामित चरणों की एक सूची है जिसका उपयोग लक्ष्य निष्पादन के लिए आदेश देने के लिए किया जा सकता है। मावेन के मानक जीवनचक्रों में से एक डिफ़ॉल्ट जीवनचक्र है, जिसमें इस क्रम में निम्नलिखित चरण सम्मिलित हैं:[12]

  • मान्य करें
  • उत्पन्न-स्रोत
  • प्रक्रिया-स्रोत
  • संसाधन उत्पन्न करें
  • प्रक्रिया-संसाधन
  • संकलित करें
  • प्रक्रिया-परीक्षण-स्रोत
  • प्रक्रिया-परीक्षण-संसाधन
  • परीक्षण-संकलन
  • परीक्षा
  • पैकेट
  • स्थापित करना
  • तैनात करना

प्लगइन्स द्वारा प्रदान किए गए लक्ष्य जीवनचक्र के विभिन्न चरणों से जुड़े हो सकते हैं। उदाहरण के लिए, डिफ़ॉल्ट रूप से, लक्ष्य "संकलक: संकलन" "संकलन" चरण से जुड़ा होता है, जबकि लक्ष्य "अचूक: परीक्षण" "परीक्षण" चरण से जुड़ा होता है। जब mvn_test कमांड निष्पादित किया जाता है, तो मावेन test चरण तक और इसमें सम्मिलित प्रत्येक चरण से जुड़े सभी लक्ष्यों को चलाता है। ऐसे मामले में, मावेन "प्रक्रिया-संसाधन" चरण से जुड़े "संसाधन:संसाधन" लक्ष्य को चलाता है, फिर "संकलक:संकलन" को चलाता है और इसी प्रकार जब तक यह अंततः "अचूक:परीक्षण" लक्ष्य को नहीं चलाता।

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

मानक जीवनचक्र किसी प्रोजेक्ट में नए उपयोगकर्ताओं को एकल कमांड mvn_install जारी करके प्रत्येक मावेन प्रोजेक्ट को सटीक रूप से बनाने, परीक्षण करने और स्थापित करने की क्षमता प्रदान करता है। डिफ़ॉल्ट रूप से, मावेन पीओम फ़ाइल को जेनरेट की गई JAR और WAR फ़ाइलों में पैकेज करता है। Diet4j जैसे उपकरण इस जानकारी का उपयोग रन-टाइम पर मावेन मॉड्यूल को पुनरावर्ती रूप से हल करने और चलाने के लिए कर सकते हैं, बिना "uber" -jarकी आवश्यकता के जिसमें सभी प्रोजेक्ट कोड सम्मिलित हैं।[13]

निर्भरताएँ

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

मेवेन और एंट के बीच मूलभूत अंतर यह है कि मेवेन का डिज़ाइन सभी परियोजनाओं को एक निश्चित संरचना और समर्थित कार्य कार्य-प्रवाह का एक सेट मानता है उदाहरण के लिए, स्रोत नियंत्रण से संसाधन प्राप्त करना, परियोजना को संकलित करना, इकाई परीक्षण इत्यादि)। जबकि अधिकांश सॉफ्टवेयर प्रोजेक्ट वास्तव में इन ऑपरेशनों का समर्थन करते हैं और वास्तव में एक अच्छी तरह से परिभाषित संरचना होती है, मेवेन के लिए आवश्यक है कि इस संरचना और ऑपरेशन कार्यान्वयन विवरण को पीओएम फ़ाइल में परिभाषित किया जाए। इस प्रकार मावेन परियोजनाओं को परिभाषित करने के तरीके और कार्य-प्रवाह की सूची पर एक सम्मेलन पर निर्भर करता है जो सामान्यतः सभी परियोजनाओं में समर्थित होते हैं।[14][15]

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

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

अंतरसंचालनीयता

जावा प्रोग्रामिंग भाषा को लक्षित करने वाले कई लोकप्रिय एकीकृत विकास वातावरण (आईडीई) में ऐड-ऑन आईडीई के निर्माण तंत्र और स्रोत संपादन टूल के साथ मावेन का एकीकरण प्रदान करने के लिए सम्मिलित हैं, जिससे मावेन को आईडीई के भीतर से परियोजनाओं को संकलित करने और कोड के लिए क्लासपाथ सेट करने की भी अनुमति मिलती है। संकलक त्रुटियों आदि को उजागर करना पूरा करना।

मावेन के साथ विकास का समर्थन करने वाले लोकप्रिय आईडीई के उदाहरणों में सम्मिलित हैं:

ये ऐड-ऑन सीधे आईडीई के भीतर किसी प्रोजेक्ट की निर्भरता के पूर्ण सेट को निर्धारित करने के लिए पीओएम को संपादित करने या पीओएम का उपयोग करने की क्षमता भी प्रदान करते हैं।

जब आईडीई अब संकलन नहीं करता है तो आईडीई की कुछ अंतर्निहित विशेषताएं समाप्त हो जाती हैं। उदाहरण के लिए, एक्लिप्स के जेडीटी में संपादित होने के बाद एकल जावा स्रोत फ़ाइल को पुन: संकलित करने की क्षमता है। कई आईडीई मावेन द्वारा पसंद किए गए फ़ोल्डरों के पदानुक्रम के बजाय परियोजनाओं के एक फ्लैट सेट के साथ कार्य करते हैं। यह मेवेन का उपयोग करते समय आईडीई में एससीएम सिस्टम के उपयोग को जटिल बनाता है।[16][17][18]

यह भी देखें

संदर्भ

  1. "Maven Release Notes – Maven 3.9.2". maven.apache.org.
  2. 2.0 2.1 "Index of /maven2/". Archived from the original on 2018-09-17. Retrieved 2009-04-15.
  3. Laugstol, Trygve. "मोजोहॉस नेटिव मावेन प्लगइन".
  4. "IBiblio Resolver | Apache Ivy™".
  5. "Reproducible/Verifiable Builds - Apache Maven - Apache Software Foundation". cwiki.apache.org.
  6. "जावा में प्रतिलिपि प्रस्तुत करने योग्य बिल्ड - डीज़ोन जावा". dzone.com.
  7. POM Reference
  8. Super POM
  9. Punzalan, Edwin. "Apache Maven Compiler Plugin – Introduction".
  10. Marbaise, Brett Porter Jason van Zyl Dennis Lundberg Olivier Lamy Benson Margulies Karl-Heinz. "Maven – Available Plugins".
  11. Amies, Alex; Zou P X; Wang Yi S (29 Oct 2011). "क्लाउड वर्चुअल मशीनों का स्वचालित विकास और प्रबंधन". IBM DeveloperWorks. IBM.
  12. Porter, Brett. "Maven – Introduction to the Build Lifecycle".
  13. "diet4j - put Java JARs on a diet, and load maven modules as needed".
  14. "Maven: The Complete Reference". Sonatype. Archived from the original on 21 April 2013. Retrieved 11 April 2013.
  15. The Central Repository Search Engine
  16. "maven.apache.org/eclipse-plugin.html". Archived from the original on May 7, 2015.
  17. "IntelliJ IDEA :: Features".
  18. "MavenBestPractices - NetBeans Wiki".


अग्रिम पठन


बाहरी संबंध