2013-09-05 10 views
8

मेरे पास एक मेवेन पेरेंट प्रोजेक्ट है जिसमें एकाधिक बच्चे/मॉड्यूल हैं ... मेरे पास मुख्य/माता-पिता के लिए निम्न pom.xml है;मेवेन बिल्ड ऑर्डर (एकाधिक मॉड्यूल)

<modules> 
     <module>Main-Ear</module> 
     <module>Sub-Web</module> 
     <module>Sub-Ui</module> 
     <module>Sub-Services</module> 
     <module>Sub-SSO-Login</module> 
    </modules> 

हालांकि, मैं वास्तविक निर्माण के क्रम अलग होने की ... निर्माण के बाद, वास्तविक आदेश की तरह दिखता है लगता है;

Main 
Sub-Services 
Sub-SSO-Login 
Sub-UI 
Sub-Web 
Main-Ear 

मैवेन इस मामले में निर्माण आदेश कहां से लेता है?

उत्तर

5

Maven मॉड्यूल बिल्डिंग ऑर्डर को मुख्य pom.xml में परिभाषित करने से नहीं लिया गया। Maven एक दूसरे मॉड्यूल के साथ मॉड्यूल निर्भरताओं पर विचार करके आदेश का निर्णय लें।

आपके मामले में निश्चित रूप से Main-Ear अंतिम निर्माण करना चाहिए।

चलिए निम्नलिखित उदाहरण पर विचार करें।

मेरे पास मॉड्यूल A, B और C है। मॉड्यूल A मॉड्यूल C और B से निर्भरता है जबकि मॉड्यूल C मॉड्यूल B से निर्भरता है। तब maven इमारत आदेश हो जाएगा

B 
C 
A 
+1

तो करने के लिए एक परिवर्तन का कारण नहीं बनेगा, यू कह रहे हैं कोई स्पष्ट घोषणा पोम में कहीं भी नहीं होगा। एक्सएमएल ... लेकिन मैवेन इस पर निर्णय लेता है ... निर्भरताओं पर आधारित .... – testndtv

+0

@testndtv हां। मुझे लगता है (लेकिन मुझे यकीन नहीं है) यह अभी भी आपके द्वारा घोषित आदेश पर निर्भर करता है, यदि दो उप-मॉड्यूल में उनके बीच कोई निर्भरता नहीं है। जैसेए -> सी और बी -> सी, तो मैवेन यह निर्धारित करने के लिए घोषणा का आदेश उपयोग कर सकता है कि ए या बी किस प्रकार बनाया गया है –

+1

@ एड्रियनशम यदि एक-दूसरे के बीच कोई निर्भरता नहीं है, तो मैवेन किस आदेश को परिभाषित करेगा –

9

आप मैन्युअल रूप से निर्माण के क्रम को नियंत्रित नहीं कर सकते हैं:

Maven परियोजना प्रलेखन से (Guide to Working with Multiple Modules):

रिएक्टर छंटाई

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

निम्नलिखित रिश्तों जब परियोजनाओं छँटाई सम्मानित किया जाता है:

  • निर्माण
  • एक प्लगइन घोषणा जहां प्लगइन का निर्माण
  • पर एक प्लगइन निर्भरता में एक और मॉड्यूल है में एक और मॉड्यूल पर एक परियोजना निर्भरता निर्माण में एक और मॉड्यूल
  • तत्व में घोषित आदेश बनाने में किसी अन्य मॉड्यूल पर एक बिल्ड एक्सटेंशन घोषणा (यदि कोई अन्य नियम लागू नहीं होता है)

ध्यान दें कि केवल "instantiated" संदर्भ उपयोग किया जाता है - dependencyManagement और pluginManagement तत्वों रिएक्टर सॉर्ट क्रम

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