Voici mon problème générique:
Mon projet P dépend de A qui dépend de B qui dépend de C qui dépend de la version 1.0.1 de D.
Il y a un problème avec la version 1.0.1 de D et je veux forcer l'utilisation d'un autre module. Je ne sais pas comment déclarer cela dans les POM de mon projet car je n'ai pas ajouté directement de dépendance à D. C'est C qui a déclaré la dépendance à D.
Important: dans ce cas, non seulement la version est modifiée, mais également le groupe et l'artefact. Il ne s'agit donc pas simplement de remplacer la version de la dépendance, mais plutôt d'exclure un module et d'en inclure un autre.
Dans le cas concret, D est StAX dont la 1.0.1 a un bug . Selon les notes du bogue, "les problèmes ont été résolus en remplaçant stax-api-1.0.1 (maven GroupId = stax) par stax-api-1.0-2 (maven GroupId = javax.xml.stream)" donc je J'essaye juste ça.
Ainsi, D = stax: stax-api: jar: 1.0.1 et C = org.apache.xmlbeans: xmlbeans: jar: 2.3.0
J'utilise maven 2.0.9 au cas où cela importerait.
Sortie de la dépendance mvn: tree "
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
Dans le POM de mon projet, j'ai la dépendance suivante sur "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>
Merci d'avance.