2012-04-24 8 views
5

मेरे पास एक परियोजना here है जो वर्तमान में, एक "आर्टिफैक्ट" उत्पन्न करने के लिए एक pom.xml (link) का उपयोग करती है।मैवेन: एक ही पोम फ़ाइल के साथ कई "कलाकृतियों" उत्पन्न करना?

मुझे क्या करना परियोजना विभाजित है करना चाहते हैं क्या है, चलो यह पी कहते हैं, में करते हैं:

  • पी-कोर, जो कोर सत्यापन प्रक्रिया शामिल है;
  • पी-प्रारूप, जिसमें "प्रारूप" कीवर्ड सत्यापन शामिल है, जो पी-कोर पर निर्भर करता है।

कारण मैं इसे करना चाहता हूं निर्भरता है: पी-प्रारूप अकेले मात्रा में 70% से अधिक में खींचता है, और जेएसओएन स्कीमा के कई उपयोगों को प्रारूप समर्थन की आवश्यकता नहीं है।

क्या मुझे दो पूरी तरह से अलग परियोजनाओं को बनाने की ज़रूरत है, या क्या मैं इन दो कलाकृतियों को उत्पन्न करने के लिए एक pom.xml का उपयोग कर सकता हूं? मुझे लगता है कि उत्तरार्द्ध करने योग्य है, क्योंकि कई परियोजनाएं पहले से ही ऐसा करती हैं (जैक्सन, उदाहरण के लिए)।

[घटना है कि यह किसी भी महत्व होता है में, मैं Sonatype के Maven रेपो के माध्यम से प्रकाशित]

उत्तर

6

आपको दो अलग-अलग परियोजनाएं (दो अलग-अलग पीओएम) बनाना चाहिए, लेकिन शायद उनके लिए सामान्य माता-पिता बनाने का एक अच्छा विचार होगा जो उन्हें मॉड्यूल के रूप में भी एकत्रित करेगा। कुछ मूलभूत बातें के लिए परियोजना विरासत और परियोजना एकत्रीकरणIntroduction to the POM के अनुभाग देखें।

मेवेन में, इसे कभी भी हैक करने का प्रयास करने का अच्छा विचार नहीं है, इसलिए यह एक पीओएम से कई अलग-अलग कलाकृतियों का उत्पादन करता है।

+0

लिंक के लिए बहुत बहुत धन्यवाद! मैं इसे सावधानी से पढ़ूंगा और देखूंगा कि मेरे लिए सबसे अच्छा क्या होगा। क्या आपको लगता है कि मैं "मास्टर" pom.xml और दो सबप्रोजेक्ट या दो पूरी तरह से अलग पेड़ का उपयोग कर बेहतर हूं? – fge

+1

मुझे लगता है कि आपके मामले में यह माता-पिता 'pom.xml' और उपनिर्देशिकाओं में दो मॉड्यूल बनाने के लिए बेहतर होगा कि यह अभिभावक मॉड्यूल के रूप में भी एकत्रित होता है। विवरण और उदाहरणों के लिए इन लिंक को देखें। –

2

आपका जीवन बहुत आसान हो जाएगा अगर आप बस एक अलग परियोजना है कि पी-कोर पर निर्भर करता है में पी प्रारूप बाहर तोड़ ।

हालांकि प्रति परियोजना कई कलाकृतियों को प्रकाशित करने के तरीके हैं, मेवेन प्रति पोम/मॉड्यूल (प्लस टेस्ट कलाकृतियों) के एक आर्टिफैक्ट के आसपास डिज़ाइन किया गया है। अनुभव से, इस डिजाइन बिंदु के आसपास काम करने के चालाक प्रयास अंततः आपको काटने का अंत करेंगे - आमतौर पर सड़क के नीचे 6 महीने के मुद्दे के रूप में जहां पैकेजिंग किसी की मशीन पर ठीक से काम नहीं करेगी।

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

3

आप मेवेन-असेंबली प्लगइन (http://maven.apache.org/plugins/maven-assembly-plugin/) का उपयोग कर सकते हैं। यदि दो कलाकृतियों ने कक्षाओं को ओवरलैप कर दिया है और एक को अपडेट करने के लिए हमेशा दूसरे को अपडेट करना आवश्यक है, तो यह एक अच्छा विकल्प है।

आपको कलाकृतियों के जीवन चक्र को सोचना है। क्या दोनों कलाकृतियों को एक ही संस्करण संख्या की आवश्यकता है? क्या आप पी-फॉर्म में एक बग ठीक करते समय पी-कोर का एक नया संस्करण प्रकाशित करना चाहते हैं? पी-कोर अपने आप पर उपयोगी है?

असेंबली प्लगइन का मुख्य रूप से उसी कलाकृति के लिए एक अलग पैकेजिंग प्रदान करने के लिए उपयोग किया जाना चाहिए, मुझे लगता है।

0

मेरे पास एक समान मामला था और मैं माइकल के सुझाव से सहमत हूं। हालांकि, मैं प्रस्तावित समाधान का विस्तार आगे बढ़ाना चाहता हूं:

मुझे लगता है कि पी में एक एकल स्रोत है और दोनों पी-कोर और पी-प्रारूप उत्पन्न होते हैं।तो आपको बच्चों के मॉड्यूल (उनके संबंधित पीओएम के साथ) के लिए एक पैरेंट पीओएम बनाना चाहिए - एक 'कोर' के लिए और एक 'प्रारूप' के लिए, लेकिन इन दोनों स्रोतों को माता-पिता/src/से प्राप्त करें।

इसलिए अनिवार्य रूप से हम विशिष्ट कलाकृतियों को उत्पन्न करने के लिए 'कोर' और 'प्रारूप' के लिए निर्माण प्रक्रियाओं को अलग करते हैं लेकिन पी के लिए मूल स्रोतों की प्रतिलिपि नहीं बनाते हैं।

मेवेन का समर्थन करता है लेकिन इस दृष्टिकोण की अनुशंसा नहीं करता है लेकिन मुझे नहीं लगता कि उन्हें क्यों नहीं करना चाहिए। मेरी राय में, किसी भी दीर्घकालिक प्रभाव के बिना इसकी संरचित, स्वच्छ और चिंता-अलग-अलग और कोई बेहतर विकल्प नहीं है।

http://maven.apache.org/guides/mini/guide-using-one-source-directory.html

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