Ecco il mio problema generico:Maven: come superare la dipendenza dalle aggiunto di una biblioteca
Il mio progetto P dipende da una che dipende B che dipende 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 nelle POM del mio progetto poiché non ho aggiunto direttamente una dipendenza su D. È C che ha dichiarato la dipendenza su D.
Importante: in questo caso, non viene modificata solo la versione, ma anche il gruppo & 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 il 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) da stax-api-1.0-2 (maven GroupId = javax.xml.stream)" quindi I sto provando proprio questo.
Così, D = Stax: Stax-api: jar: 1.0.1 e C = org.apache.xmlbeans: XMLBeans: vaso: 2.3.0
Sto utilizzando Maven 2.0.9 nel caso questioni.
uscita di mvn dipendenza: 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
In POM del mio progetto ho il 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
non è chiaro come posso specificare la versione poiché non dichiaro una dipendenza su D. Inoltre, il primo collegamento fornito ha "Questo documento descrive il resto dei requisiti per la gestione delle dipendenze che NON sono ancora stati implementati per Maven 2.0, in particolare per quanto riguarda le dipendenze transitive. " in cima. – wishihadabettername
@wishihadabettername, come detto nell'altro documento: "È possibile aggiungere esplicitamente una dipendenza a D 2.0 in A per forzare l'utilizzo di D 2.0" –
In realtà si duplica la stessa voce nel proprio pom. Nella tua dipendenza, specifica uno che desideri. Ciò sostituirà qualsiasi versione utilizzata dalle dipendenze "più profonde". –