मेरे पास बहु-मॉड्यूल प्रोजेक्ट में गुणों के संबंध में कोई प्रश्न है।बहु-मॉड्यूल प्रोजेक्ट में मेवेन गुण डिफ़ॉल्ट पर रीसेट कर दिए गए हैं
निम्नलिखित 3 स्तरीय परियोजना struture पर विचार करें:
project
+- pom.xml (packaging: pom) //referred to as super-pom
+- module_group
+- pom.xml (packaging: pom) //referred to as group-pom
+- module
+-pom.xml (packaging: jar) //referred to as module-pom
सुपर पोम में मैं एक संपत्ति संशोधन जो डिफ़ॉल्ट मान "अज्ञात" हो जाता है परिभाषित करते हैं।
इसके अतिरिक्त मैं buildnumber-maven-plugin
घोषित करता हूं और इसका उपयोग करता हूं जो एसवीएन संशोधन प्राप्त करने के लिए कॉन्फ़िगर किया गया है और इसे संशोधन में डाल दिया गया है।
अगला मैं उस संपत्ति को प्रकट करने के लिए maven-jar-plugin
कॉन्फ़िगर करता हूं।
वें मॉड्यूल-पोम में मैं buildnumber-maven-plugin
का उपयोग घोषित करता हूं ताकि वास्तव में इसे निष्पादित किया जा सके।
यह सब मॉड्यूल को सीधे बनाते समय काम करता है, यानी मॉड्यूल-पोम निष्पादित करता है। मेनिफेस्ट में संशोधन है जिसमें buildnumber-maven-plugin
द्वारा कंसोल में मुद्रित किया गया है।
हालांकि, अगर मैं सुपर पोम या निष्पादित समूह-पोम संशोधन प्रकट करने के लिए लिखा है के लिए डिफ़ॉल्ट मान है, हालांकि buildnumber-maven-plugin
निष्पादित हो जाता है और यह सही संशोधन को पुन: प्राप्त (यह सांत्वना को यह प्रिंट से पहलेmaven-jar-plugin
रन)।
तो मुझे यह महसूस हो रहा है कि बहु-मॉड्यूल परियोजनाओं में संपत्ति विरासत पर मुझे कुछ याद आ रहा है।
क्या किसी को पता है कि यहां क्या गलत हो सकता है? या क्या कोई मुझे बता सकता है कि वास्तव में उन मामलों में संपत्तियों को कैसे प्रबंधित किया जाता है (दुर्भाग्यवश मैं अभी तक एक अच्छा विवरण नहीं ढूंढ पाया)?
अद्यतन
मैं कुछ अनुसंधान और कुछ परीक्षण डिबग आउटपुट (-X
विकल्प) और मैं अब तक क्या मिला से साथ चलता था, मुझे लगता है मेरी समस्या यह है:
1) के दौरान पोम में प्रयुक्त गुणों को पार्स करने के लिए उनके मूल्यों के साथ प्रतिस्थापित किया जाता है।
इस आंशिक पोम पर विचार करें:
<!-- declare the property default value -->
<properties>
<revision>default</revision>
</properties>
...
<!-- use the property -->
<someconfig>${revision}</someconfig>
बाद पोम मूल्यांकन किया जाता है, यह एक राज्य है कि इस के अनुरूप होगा में परिणाम लगता है:
<properties>
<revision>default</revision>
</properties>
...
<!-- The property seems to be "statically" replaced -->
<someconfig>default</someconfig>
2) है कि वास्तविक सेट प्लगइन संपत्ति मूल्य बाद में चलता है, भले ही validate
चरण के दौरान।
इस प्रकार संपत्ति स्वयं ही नए मूल्य पर सही ढंग से सेट की गई है, लेकिन यह अब और नहीं पढ़ी गई है।
3) <someconfig>
का उपयोग करता है प्लगइन (मेरे मामले में यह maven-jar-plugin
होगा) अब <someconfig>default</someconfig>
के साथ चलता है और इस तरह यह revision
बिल्कुल नहीं पढ़ता।
क्या कोई इसकी पुष्टि कर सकता है?