मावेन में "पोम" पैकेजिंग क्या है?


175

संकलित सर्वर पर संकलित करने और प्राप्त करने के लिए मुझे एक मावेन परियोजना दी गई थी। मैंने आज से पहले कभी भी मावेन का उपयोग नहीं किया है, लेकिन मैं काफी कुछ कर रहा हूं। ऐसा लगता है कि pom.xmlइस परियोजना में शीर्ष स्तर की फ़ाइलों के रूप में पैकेजिंग प्रकार निर्धारित है pom

mvn installइस एप्लिकेशन को लागू करने के बाद मुझे क्या करना चाहिए ? मैं उम्मीद कर रहा था warकि मुझे कहीं न कहीं एक फाइल मिल सकती है, लेकिन मुझे लगता है कि मैं गलत जगह देख रहा हूं या एक कदम याद कर रहा हूं।


3
mvan इंस्टॉल - इसका उपयोग आपके स्थानीय रिपॉजिटरी में आपके आर्टवर्क (जार, वॉर, ईयर) को स्थापित करने के लिए किया जाता है (आमतौर पर यह हो सकता है - ~ / .m2 / रिपॉजिटरी डीरकोट्री)
Łukasz Siwiński

जवाबों:


148

pomमूल रूप से सबमॉड्यूल्स का एक कंटेनर है, प्रत्येक सबमॉड्यूल का प्रतिनिधित्व उपनिर्देशिका द्वारा उसी निर्देशिका में पैकेजिंग के pom.xmlसाथ किया जाता है pom

कहीं न कहीं, परियोजना संरचना के भीतर आप warपैकेजिंग के साथ कलाकृतियों (मॉड्यूल) पाएंगे । मावेन आम तौर पर /targetप्रत्येक मॉड्यूल के उपनिर्देशिका में सब कुछ बनाता है । इसलिए पैकेजिंग के साथ एक मॉड्यूल mvn installमें targetउपनिर्देशिका में देखें war

बेशक:

$ find . -iname "*.war"

समान रूप से अच्छी तरह से काम करता है ;-)।


45

पोम पैकेजिंग केवल एक विनिर्देश है जो बताता है कि प्राथमिक विरूपण साक्ष्य एक युद्ध या जार नहीं है, बल्कि स्वयं pom.xml है।

अक्सर इसका उपयोग "मॉड्यूल" के साथ संयोजन में किया जाता है जो आमतौर पर परियोजना में उप-निर्देशिका में निहित होते हैं; हालाँकि, इसका उपयोग कुछ ऐसे परिदृश्यों में भी किया जा सकता है जहाँ कोई प्राथमिक द्विआधारी का निर्माण नहीं किया गया था, अन्य सभी महत्वपूर्ण कलाकृतियों को माध्यमिक वर्गीकरण के रूप में घोषित किया गया है

एक "प्रलेखन" परियोजना के बारे में सोचो, प्राथमिक विरूपण साक्ष्य एक पीडीएफ हो सकता है, लेकिन यह पहले से ही बनाया गया है, और इसे एक द्वितीयक विरूपण साक्ष्य के रूप में घोषित करने के लिए कार्य को मावेन को बताने के लिए कॉन्फ़िगरेशन पर वांछित हो सकता है कि पीडीएफ कैसे बनाया जाए जिसकी आवश्यकता नहीं है संकलित।


अन्य उदाहरण जो मैं पोम प्रोजेक्ट ==> अमूर्त वर्ग और इसके अंदर मॉड्यूल (ओं) के समान लाइनों के बारे में सोच सकता हूं ==> ठोस वर्ग (ओं)।
भरतज

22

पैकेजिंग का pomउपयोग उन परियोजनाओं में किया जाता है जो अन्य परियोजनाओं को एकत्र करती हैं, और उन परियोजनाओं में जिनकी केवल उपयोगी आउटपुट कुछ प्लगइन से संलग्न कलाकृति है। आपके मामले में, मुझे लगता है कि आपके शीर्ष-स्तरीय पोम में <modules>...</modules>अन्य निर्देशिकाओं को सम्मिलित करना शामिल है, और वास्तविक आउटपुट अन्य (शायद उप) निर्देशिकाओं में से एक का परिणाम है। यदि इस उद्देश्य के लिए समझदारी से कोडिंग की जाए तो इसकी पैकेजिंग होगी war


1
आपका क्या मतलब है "जिसका एकमात्र उपयोगी आउटपुट कुछ प्लगइन से संलग्न कलाकृति है"?
omjego

9

अपने प्रश्न का उत्तर देने के लिए जब आप एक mvan करते हैं: स्थापित करें , maven एक पैकेज्ड विरूपण साक्ष्य ( pom.xml में पैकेजिंग विशेषता) के आधार पर बनाएगा , अपने maven को चलाने के बाद आप .package एक्सटेंशन के साथ फ़ाइल पा सकते हैं।

  • परियोजना कार्यक्षेत्र की लक्ष्य निर्देशिका में
  • इसके अलावा जहां आपके मैवेन 2 लोकल रिपॉजिटरी आपके बॉक्स पर ( .m2 / रेस्पिरेटरी ) सर्च करते हैं, आपका .m2 रिपॉजिटरी में ( groupId / विरूपण साक्ष्य / विरूपण साक्ष्य-version.packaging ) निर्देशिका के तहत सूचीबद्ध है।
  • यदि आप निर्देशिका के अंतर्गत देखते हैं तो आपको पैकेज्ड एक्सटेंशन फ़ाइल मिलेगी और पोम एक्सटेंशन (पोम एक्सटेंशन मूल रूप से pom.xml है जो इस पैकेज को जेनरेट करने के लिए उपयोग किया जाता है)
  • यदि आपकी मावेन परियोजना बहु-मॉड्यूल है, तो प्रत्येक मॉड्यूल शीर्ष स्तर की परियोजना को छोड़कर ऊपर वर्णित दो फाइलों में होगा, जिसमें केवल एक पोम होगा।

8

POM के रूप में एक विरूपण साक्ष्य को पैकेजिंग करने का मतलब है कि इसमें एक बहुत ही सरल जीवनचक्र है

package -> install -> deploy

http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

यह उपयोगी है यदि आप एक pom.xml फ़ाइल या एक परियोजना को तैनात कर रहे हैं जो अन्य पैकेजिंग प्रकारों के साथ फिट नहीं है।

हम अपनी कई परियोजनाओं के लिए पोम पैकेजिंग का उपयोग करते हैं और उचित रूप में अतिरिक्त चरणों और लक्ष्यों को बांधते हैं।

उदाहरण के लिए हमारे कुछ एप्लिकेशन उपयोग करते हैं:

prepare-package -> test -> package -> install -> deploy

जब आप एप्लिकेशन को स्थापित करते हैं तो इसे अपने स्थानीय स्तर पर .m2 रिपॉजिटरी में जोड़ना चाहिए। कहीं और प्रकाशित करने के लिए आपको सही वितरण प्रबंधन जानकारी सेट करने की आवश्यकता होगी। यदि मावेन द्वारा कलाकृतियों को स्वचालित रूप से संलग्न नहीं किया जाता है, तो आपको मावेन बिल्डर हेल्पर प्लगइन का उपयोग करने की आवश्यकता हो सकती है।


6

मैं इसका उत्कृष्ट उदाहरण देखने का सुझाव देता हूं: http://maven.apache.org/guides/getting-started/index.html#How_do_I_build_more_than_one_project_at_once

यहां मेरा वेब-वेब वेब प्रोजेक्ट है, जो मेरे ऐप प्रोजेक्ट के कोड पर निर्भर करता है। तो दो परियोजनाओं को एक में बंडल करने के लिए, हमारे पास शीर्ष स्तर pom.xml है जिसमें उल्लेख किया गया है कि परियोजनाएं (मॉड्यूल शब्दावली के अनुसार मॉड्यूल) अंत में बंडल की जानी हैं। इस तरह के शीर्ष स्तर pom.xml पोम पैकेजिंग का उपयोग कर सकते हैं।

my-webapp में युद्ध पैकेजिंग हो सकती है और मेरी ऐप पर निर्भरता हो सकती है। माय-ऐप में जार पैकेजिंग हो सकती है।


2

वास्तविक जीवन का उपयोग मामला

एक जावा-भारी कंपनी में हमारे पास एक अजगर परियोजना थी जिसे नेक्सस विरूपण साक्ष्य भंडार में जाने की आवश्यकता थी। पायथन में वास्तव में कलाकृतियां नहीं हैं, इसलिए बस .tar या। Python फाइलों को खोलना और पुश करना चाहते हैं। रेपो में पहले से ही मावेन इंटीग्रेशन था, इसलिए हमने पायथन प्रोजेक्ट को पैकेज के रूप में पैकेज करने और इसे अपलोड करने के <packaging>pom</packaging>लिए मावेन असेंबली प्लगइन के साथ डिज़ाइनर का उपयोग किया .zip

इस SO पोस्ट में चरणों की रूपरेखा दी गई है


1

"पोम" पैकेजिंग कंटेनर के अलावा और कुछ नहीं है, जिसमें जार, युद्ध और कान जैसे अन्य पैकेज / मॉड्यूल शामिल हैं।

यदि आप बाहरी पैकेज / कंटेनर पर कोई ऑपरेशन करते हैं जैसे mvan क्लीन कंपाइल इंस्टॉल। तब आंतरिक संकुल / मॉड्यूल को भी स्वच्छ संकलन स्थापित किया जाता है।

प्रत्येक पैकेज / मॉड्यूल के लिए एक अलग ऑपरेशन करने की आवश्यकता नहीं है।


1

https://maven.apache.org/pom.html

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


0

पीओएम (प्रोजेक्ट ऑब्जेक्ट मॉडल) परियोजना के निर्माण के लिए स्वचालन स्क्रिप्ट के अलावा कुछ भी नहीं है, हम स्वचालन स्क्रिप्ट को एक्सएमएल में लिख सकते हैं, बिल्डिंग स्क्रिप्ट फ़ाइलों को अलग-अलग स्वचालन टूल में अलग-अलग नाम दिया गया है

जैसे हम build.xml को ANT, pom.xml को MAVEN कहते हैं

MAVEN जार, युद्ध, कान और पोम को पैकेज कर सकता है जो हम सभी के लिए नई बात है

यदि आप चाहते हैं कि POM.XML क्या है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.