2011-01-28 12 views
14

में समान निर्भरता के विभिन्न संस्करण मेरे पास एक मेवेन प्रोजेक्ट है जो वुडस्टॉक्स और एक्सस्ट्रीम दोनों पर निर्भर करता है। दुर्भाग्यवश एक्सस्ट्रीम भी वुडस्टॉक्स पर निर्भर करता है, लेकिन मुझे जो चाहिए उससे थोड़ा बड़ा संस्करण। इस बीच, वुडस्टॉक्स libs के आर्टिफैक्ट नाम बदल गए, तो मैवेन उन्हें एक ही कलाकृति के कई संस्करणों पर विचार नहीं करेगा। लेकिन पैकेज और वर्ग के नाम समान हैं, जिसका अर्थ है कि रनटाइम पर एक संघर्ष है।मेवेन

अब, मैं स्पष्ट रूप से निर्माण के पुराने पुराने वुडस्टॉक्स जार (हमारे मामले में war फ़ाइल) को किसी भी तरह से हैक कर सकता हूं लेकिन इस प्रकार की समस्या को हल करने का सही तरीका क्या है?

उत्तर

18

आप excluding अपने dependency xstream के लिए घोषणा में वुडस्टॉक्स निर्भरता को आजमा सकते हैं।

<dependency> 
     <groupId>xstream.group</groupId> 
     <artifactId>xstream</artifactId> 
     <version>a.b.c</version> 
     <exclusions> 
      <exclusion> 
       <groupId>woodstox.group</groupId> 
       <artifactId>woodstox</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
+6

+1, लेकिन दुर्भाग्य से यह आवश्यक है कि नए संस्करण में एक ही वर्ग और पैकेज नाम पुराने संस्करण के रूप में हों और अन्यथा पिछड़ा संगत –

+0

यह वही है जो मुझे चाहिए, धन्यवाद। – biziclop

5

यदि आप भाग्यशाली हैं, तो रघुराम द्वारा सुझाए गए समाधान काम करेंगे।

यदि नहीं, तो आपको एक्सस्ट्रीम जार का एक संशोधित संस्करण बनाना होगा, शायद Maven Shade Plugin का उपयोग करके, एक्सस्ट्रीम वुडस्टॉक्स दोनों को एक जार, renaming all woodstox packages में विलय करना होगा।