मैंने this question देखा और यह मुझे कॉन्फ़िगरेशन घोषित करने के वैकल्पिक तरीके के लिए मेवेन कॉन्फ़िगरेशन में फिर से (सफलता के बिना) देखने के लिए प्रेरित करता है, इसलिए यह इसे ओवरराइड करने के बजाय मूल POM की कॉन्फ़िगरेशन में जोड़ा जाता है। एक मेवेन पीओएम में, यदि कॉन्फ़िगरेशन माता-पिता के समान तत्व घोषित करता है तो यह माता-पिता कॉन्फ़िगरेशन को ओवरराइड करता है। जैसा कि दूसरे प्रश्न के स्वीकृत उत्तर में कहा गया है, यह अपेक्षित व्यवहार है।मेवेन कॉन्फ़िगरेशन ओवरराइड करने के बजाए बढ़ाना
लेकिन यह हमेशा वांछित व्यवहार नहीं है। क्या कॉन्फ़िगरेशन ओवरराइड करने के बजाय मेवेन में जोड़ने का कोई अर्थ होना चाहिए?
उदाहरण के लिए: - कॉन्फ़िगरेशन फ़ाइनल के तत्व घोषित करने की क्षमता प्रदान करें, ताकि बच्चे उन्हें जोड़ सकें लेकिन प्रतिस्थापित नहीं कर सकें? - बच्चे विन्यास, एक अतिरिक्त के रूप तत्व घोषित करने के लिए तो यह माता पिता
जब ओवरराइड व्यवहार हमेशा वांछनीय नहीं है का एक अच्छा उदाहरण AspectJ-Maven-प्लगइन का aspectLibraries तत्व के लिए है के साथ विलय कर दिया है की अनुमति दें ।
मेरे मूल पीओएम में मैं पहलू प्लगइन के लिए एक कॉन्फ़िगरेशन परिभाषित करता हूं जो एक ट्रेसिंग जार को एक पहलू पुस्तकालय के रूप में उपयोग करने की घोषणा करता है।
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<executions>
<execution>
<id>compile_with_aspectj</id>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
<configuration>
<aspectLibraries>
<aspectLibrary>
<groupId>name.seller.rich</groupId>
<artifactId>tracing</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
<dependencies>
<dependency>
<groupId>aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.5.3</version>
</dependency>
</dependencies>
</plugin>
यह सभी बाल परियोजनाओं द्वारा विरासत में मिला है और मुझे सभी परियोजनाओं में पता लग रहा है, जो अच्छा है। हालांकि अगर मैं एक बच्चे पीओएम में एक और पहलू पुस्तकालय परिभाषित करता हूं, तो यह मेरी ट्रेसिंग कॉन्फ़िगरेशन को प्रतिस्थापित करता है।
नोट मेरे पास इस विशेष समस्या का समाधान है, मुझे सामान्य मामले और मेवेन के लिए प्रभाव में रूचि है।
सरल उत्तर बच्चे पीओएम के साथ-साथ नए जार में ट्रेसिंग जार के लिए कॉन्फ़िगरेशन को फिर से शुरू करना होगा, लेकिन इसमें रखरखाव के प्रभाव हैं, और यदि मैं प्रोफ़ाइल में ट्रेसिंग कॉन्फ़िगरेशन घोषित करना चाहता हूं तो यह हो सकता है यदि आवश्यक हो तो अक्षम (जो मैं करता हूं), तो मुझे बच्चे में प्रोफ़ाइल को फिर से लागू करने की आवश्यकता है।
उपरोक्त नमूने में निर्भरता घोषणा माता-पिता और अन्य जगहों पर अन्य निर्भरता घोषणाओं के साथ विलय कर दी गई है। मुझे पता है निर्भरता एक विशेष मामला है, लेकिन यह दिखाता है कि इसे कार्यान्वित करने के लिए संभव है।
धन्यवाद कि जेएसी की एक बड़ी मदद है। यह दिखाने के लिए आपकी प्रतिक्रिया को स्पष्ट करने के लायक हो सकता है कि यह सभी कॉन्फ़िगरेशन सूचियों में एक सामान्य विशेषता है, विशेष रूप से पहलू पुस्तकालयों –
को सुझाए गए अनुसार अपडेट नहीं किया गया है। यदि भविष्य में मैवेन संस्करणों में यह व्यवहार बदलता है, तो उम्मीद है कि जो लोग जानते हैं वे मेवेन उपयोगकर्ता अकसर किये गए सवाल को अपडेट करेंगे। –