Ecco il mio problema generico:
Il mio progetto P dipende da A che dipende da B che dipende da C che dipende dalla versione 1.0.1 di D.
C'è un problema con la versione 1.0.1 di D e voglio forzare l'uso di un altro modulo. Non so come dichiararlo nei POM del mio progetto poiché non ho aggiunto direttamente una dipendenza da D. È C che ha dichiarato la dipendenza da D.
Importante: in questo caso, non viene modificata solo la versione, ma anche il gruppo e l'artefatto. Quindi non si tratta solo di sovrascrivere la versione della dipendenza, ma piuttosto di escludere un modulo e includerne un altro.
Nel caso concreto, D è StAX la cui 1.0.1 ha un bug . Secondo le note nel bug, "i problemi sono stati risolti sostituendo stax-api-1.0.1 (maven GroupId = stax) con stax-api-1.0-2 (maven GroupId = javax.xml.stream)" quindi ho Sto provando proprio questo.
Quindi, D = stax: stax-api: jar: 1.0.1 e C = org.apache.xmlbeans: xmlbeans: jar: 2.3.0
Sto usando Maven 2.0.9 nel caso sia importante.
Output della dipendenza mvn: albero "
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
Nel POM del mio progetto ho la seguente dipendenza da "A":
<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>
Grazie in anticipo.