2011-09-21 13 views
6

मैवेन के लिए नया हूं, और मैं समझने की कोशिश कर रहा हूं कि मेरी कंपनी के मॉड्यूल 'मॉड्यूल समूह' में क्यों व्यवस्थित होते हैं, लेकिन प्रत्येक उप-मॉड्यूल भी स्पष्ट रूप से अपने माता-पिता को घोषित करता है। मुझे समझ में नहीं आता कि पीओएम संदर्भ difference between inheritance and aggregation के बारे में क्या कहने का प्रयास कर रहा है।अपाचे मैवेन: विरासत, एकत्रीकरण और निर्भरता के बीच क्या अंतर है?

उदाहरण के लिए

, एक माता पिता मॉड्यूल:

<groupId>example.group</groupId> 
<artifactId>util</artifactId> 
<packaging>pom</packaging> 
<name>Util Parent</name> 

<modules> 
    <module>util_client</module> 
    <module>util_core</module> 
    <module>util_server</module> 
</modules> 

और इसकी बच्चों में से एक:

<parent> 
    <artifactId>util</artifactId> 
    <groupId>example.group</groupId> 
    <version>trunk-SNAPSHOT</version> 
</parent> 

<groupId>example.group.util</groupId> 
<artifactId>util_core</artifactId> 
<packaging>jar</packaging> 
<name>Util Core</name> 

क्यों यह दोनों तरीकों की घोषणा? क्या यह अनावश्यक है? चीजों को और भी अधिक भ्रमित करने के लिए, util submodules के कुछ eachother पर निर्भर करते हैं:

<groupId>example.group.util</groupId> 
<artifactId>util_client</artifactId> 
<packaging>jar</packaging> 
<name>Util Client</name> 

<dependencies> 
    <dependency> 
     <groupId>example.group.util</groupId> 
     <artifactId>util_core</artifactId> 
    </dependency> 
</dependencies> 

क्षमा करें अगर यह एक प्रश्न के एक doozy है, लेकिन वाह यह भ्रामक है! आपकी सहायता के लिए धन्यवाद.

उत्तर

9

जब आप उप-मॉड्यूल को परिभाषित करते हैं, तो आप उन्हें शीर्ष स्तर से एक बार में बना और रिलीज़ कर सकते हैं।

आप दूसरे उदाहरण में विरासत का उपयोग करते हैं, तो आप माता-पिता पोम एक बार परिभाषित से परिभाषाओं का उपयोग कर सकते हैं, (जैसा जो सॉफ्टवेयर के संस्करण का उपयोग करें)

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

+0

तो मैं 'util_client' के उप-मॉड्यूल के रूप में 'util_core' निर्दिष्ट क्यों नहीं करना चाहूंगा? क्या 'util_client' अभी भी संकलित होगा? –

+0

यह तब तक संकलित नहीं होगा जब तक 'util_core' स्थापित नहीं किया गया है' mvn install' अगर आप इसे शीर्ष स्तर से करते हैं तो यह उन्हें सभी को संकलित करेगा। –

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