2011-01-28 13 views
14

Ho un progetto Maven che dipende da Woodstox e XStream. Sfortunatamente XStream dipende anche da Woodstox, ma una versione leggermente più vecchia di quella di cui ho bisogno. Nel frattempo, però, i nomi dei manufatti delle librerie di Woodstox sono cambiati, quindi Maven non li considererà più versioni dello stesso artefatto. Ma i nomi di pacchetto e classe sono gli stessi, il che significa che c'è un conflitto in fase di runtime.Versioni diverse della stessa dipendenza in Maven

Ora, potrei ovviamente incidere il vecchio vaso woodtox fuori dalla build (un file war nel nostro caso) in qualche modo, ma qual è il modo corretto di risolvere questo tipo di problema?

risposta

18

Si potrebbe provare excluding woodstox dipendenza nel tuo dependency dichiarazione per 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, ma sfortunatamente ciò richiede che la nuova versione abbia gli stessi nomi di classi e pacchetti della vecchia versione ed è altrimenti compatibile all'indietro –

+0

Questo sembra essere esattamente ciò di cui ho bisogno, grazie. – biziclop

5

Se sei fortunato, la soluzione suggerita da Raghuram funzionerà.

In caso contrario, sarà necessario creare una versione modificata del jar XStream, probabilmente utilizzando lo Maven Shade Plugin, unendo il woodtox XStream in un Jar, renaming all woodstox packages.

Problemi correlati