यहाँ मेरी सामान्य समस्या है द्वारा जोड़ा ओवरराइड करने के लिए:Maven: कैसे निर्भरता एक पुस्तकालय
मेरे परियोजना पी पर निर्भर करता है एक जो बी जो सी जो डी के
संस्करण 1.0.1 पर निर्भर करता है पर निर्भर करता है पर निर्भर करता हैडी के संस्करण 1.0.1 के साथ एक समस्या है और मैं किसी अन्य मॉड्यूल के उपयोग को मजबूर करना चाहता हूं। मुझे नहीं पता कि यह मेरे प्रोजेक्ट के पीओएम में कैसे घोषित किया जाए क्योंकि मैंने सीधे डी पर निर्भरता नहीं जोड़ा है। यह सी है जिसने डी
पर निर्भरता घोषित की है: इस मामले में, न केवल संस्करण बदल दिया गया है, बल्कि समूह & आर्टिफैक्ट भी है। तो यह केवल निर्भरता के संस्करण को ओवरराइड करने की बात नहीं है, बल्कि मॉड्यूल को छोड़कर और किसी अन्य को शामिल करने का मामला नहीं है।
ठोस मामले में, डी StAX जिसका 1.0.1 एक bug है। बग में नोट के अनुसार, "समस्याओं stax-api-1.0-2 द्वारा stax-api-1.0.1 (Maven ग्रुप = stax) की जगह द्वारा हल कर रहे थे (Maven ग्रुप = javax.xml.stream)" इसलिए मैं मैं बस कोशिश कर रहा हूँ।
इस प्रकार, डी = stax: stax-api: जार: 1.0.1 और सी = org.apache.xmlbeans: xmlbeans: जार: 2.3.0
मैं मामले में Maven 2.0.9 का उपयोग कर रहा है यह मायने रखती है। mvn निर्भरता के
आउटपुट: पेड़ एक ""
mvn dependency:tree
[..snip..]
[INFO] +- org.apache.poi:poi-ooxml:jar:3.6:compile
[INFO] | +- org.apache.poi:poi-ooxml-schemas:jar:3.6:compile
[INFO] | | +- org.apache.xmlbeans:xmlbeans:jar:2.3.0:compile
[INFO] | | | \- stax:stax-api:jar:1.0.1:compile
अपने प्रोजेक्ट के पोम में मैं पर निम्नलिखित निर्भरता ":।
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.6</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.6</version>
</dependency>
अग्रिम धन्यवाद
यह स्पष्ट नहीं है कि मैं संस्करण को कैसे निर्दिष्ट कर सकता हूं क्योंकि मैं डी पर निर्भरता घोषित नहीं करता हूं। साथ ही, आपके द्वारा प्रदान किया गया पहला लिंक "यह दस्तावेज़ निर्भरता प्रबंधन के लिए शेष आवश्यकताओं का वर्णन करता है जो अभी तक लागू नहीं किए गए हैं मेवेन 2.0, विशेष रूप से संक्रमणीय निर्भरताओं के संबंध में। " शीर्ष पर। – wishihadabettername
@ विशिहाडाबेटर्ननाम, जैसा कि अन्य दस्तावेज़ में कहा गया है: "आप डी 2.0 के उपयोग को मजबूर करने के लिए डी 2.0 में निर्भरता को स्पष्ट रूप से जोड़ सकते हैं" –
आप वास्तव में अपने स्वयं के पोम में प्रविष्टि को डुप्लिकेट करते हैं। अपनी निर्भरता में, निर्दिष्ट करें जो आप चाहते हैं। यह "गहरी" निर्भरताओं द्वारा उपयोग किए जाने वाले किसी भी संस्करण को ओवरराइड करेगा। –