Maven: comment remplacer la dépendance ajoutée par une bibliothèque

Voici mon problème générique:

Mon projet P dépend de la 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 dans mon projet de Pdm, puisque je n'ai pas ajouté une dépendance sur D directement. C'est C qui a déclaré que la dépendance sur D.

Important: Dans ce cas, non seulement la version est modifiée, mais le groupe & artefact ainsi. Il n'est donc pas juste une question de substitution de la version de la dépendance, mais plutôt, de l'exclusion d'un module et notamment un autre.

Dans le cas concret, D est StAX dont la version 1.0.1 a un bug. Selon les notes du bug, "les problèmes ont été résolu par le remplacement de la stax-api-1.0.1 (maven GroupId = stax) par stax-api-1.0-2 (maven GroupId = javax.xml.stream)" donc j'essaye juste que.

Ainsi, D = stax:stax-api:jar:1.0.1 et C = org.apache.xmlbeans:xmlbeans jar:2.3.0

Je suis en utilisant maven 2.0.9 en cas de questions.

Sortie de mvn dependency: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 mon POM du projet, j'ai la dépendance suivant sur la "Une":

<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.