मेवेन समुदाय में इन अवधारणाओं की परिभाषा में एक बड़ी समस्या है। आप सही करते हुए कहा कि एक अभिभावक पोमविरासत और मॉड्यूल-पोमरचना है के साथ कर रहे हैं। लेकिन दुर्भाग्य से इन दो अवधारणाओं को अलग करने के लिए मेवेन में कोई इतिहास नहीं है। मेवेन दस्तावेज स्पष्ट रूप से कहता है कि उन्हें अलग करना बेहतर है। इसके परिणामस्वरूप यह आदर्श संरचना
app-api/
app-impl/
app-war/
app-parent/
pom.xml
जहां pom.xml मॉड्यूल पोम है।
लेकिन खुले स्रोत क्षेत्र में आप लगभग हर परियोजना को देखेंगे, उनके बीच अंतर नहीं है।
इसका एक कारण है: कई प्लगइन्स भी उनके बीच विचलित नहीं होते हैं। और यहां तक कि मैवेन भी एक और सेटिंग मानते हैं: यदि <relativePath>
सेट नहीं किया गया है तो मैवेन मानते हैं कि माता-पिता ..
पर हैं। तो प्रत्येक परियोजना को माता-पिता के रूप में <relativePath>../app-parent</relativePath>
पर इंगित करना होगा।
सबसे लोकप्रिय प्लगइन जिसमें उल्लिखित संरचना के साथ बड़ी समस्याएं हैं, मेवेन-रिलीज-प्लगइन है! जब आप इस धारणा का पालन नहीं करते हैं कि मॉड्यूल-पोम अभिभावक-पोम है तो आपको अजीब समस्याओं का सामना करना पड़ेगा।
सबसे खराब बग यह है कि रिलीज-प्लगइन आपके माता-पिता में संस्करण-गुणों को प्रतिस्थापित नहीं कर सकता है और SNAPSHOT-Dependencies के कारण विफल रहता है। इन गुणों को रिहा आम तौर पर, जबकि स्वचालित रूप से उनकी रिहाई संस्करण 1.1 और 1.2 पर सेट किया जाएगा आपके अभिभावक ने शायद इस
<properties>
<app-api.version>1.1-SNAPSHOT</app-api.version>
<app-impl.version>1.2-SNAPSHOT</app-impl.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>myorg</groupId>
<artifactId>app-api</artifactId>
<version>${app-api.version}</version>
</dependency>
<dependency>
<groupId>myorg</groupId>
<artifactId>app-impl</artifactId>
<version>${app-impl.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
की तरह कुछ शामिल होंगे। लेकिन रिलीज-प्लगइन (संस्करण 2.2.2 तक परीक्षण) एक संदेश के साथ विफल रहता है कि मॉड्यूल स्नैपशॉट निर्भरताओं के साथ जारी नहीं किया जा सकता है।
यदि आप कुछ मॉड्यूल-पोम्स को केवल "छोड़ें" तो यह समस्या नहीं हो सकती है जब आप <relativePath>
को सही तरीके से परिभाषित करते हैं। लेकिन आपको मेवेन प्लगइन्स में कुछ बग्स को आजमाने और उम्मीद करने की ज़रूरत है। इन बगों के अलावा आप पूरी तरह से पोम्स को अलग करने का अधिकार रखते हैं और यदि आपके पास सैंडबॉक्स वाली रिलीज करने का समय है तो मैं इसे आज़मा दूंगा।
स्रोत
2013-07-05 13:26:55
से यह प्राप्त नहीं होता है, यह आपके प्रश्न का उत्तर नहीं देता है, लेकिन यदि आपने विरासत से एकत्रीकरण अलग किया है (जो मैं भी करता हूं) आप अपने एग्रीगेटर पोम्स से क्यों विरासत में हैं? समेकित पोम्स में अनुभाग निर्दिष्ट नहीं करते हैं या आपके असली माता-पिता से प्राप्त नहीं होते हैं। असल में, _ "रिक्त" समेकित मॉड्यूल को परिभाषित किया जाता है क्योंकि उनके submodules_ के माता-पिता अनिवार्य नहीं हैं। अगर ऐसा नहीं होता है तो इसे मत करें –
Hilikus