Maven: Überschreiben der von einer Bibliothek hinzugefügten Abhängigkeit

Hier ist mein generisches Problem:

Mein Projekt P hängt von A ab, was von B abhängt, was von C abhängt, was von Version 1.0.1 von D abhängt.

Es gibt ein Problem mit Version 1.0.1 von D und ich möchte die Verwendung eines anderen Moduls erzwingen. Ich weiß nicht, wie ich das in den POMs meines Projekts deklarieren soll, da ich keine Abhängigkeit von D direkt hinzugefügt habe. Es ist C, das die Abhängigkeit von D deklariert.

Wichtig: In diesem Fall wird nicht nur die Version geändert, sondern auch die Gruppe und das Artefakt. Es geht also nicht nur darum, die Version der Abhängigkeit zu überschreiben, sondern vielmehr darum, ein Modul auszuschließen und ein anderes einzuschließen.

Im konkreten Fall ist D StAX, dessen 1.0.1 ein @ hFehle. Laut den Hinweisen im Bug "wurden die Probleme durch Ersetzen des stax-api-1.0.1 (maven GroupId = stax) durch stax-api-1.0-2 (maven GroupId = javax.xml.stream) gelöst", so ich versuche gerade das.

Thus, D = stax: stax-api: jar: 1.0.1 und C = org.apache.xmlbeans: xmlbeans: jar: 2.3.0

Ich verwende Maven 2.0.9, falls es darauf ankommt.

Ausgabe der MVN-Abhängigkeit: Baum "

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

m POM meines Projekts habe ich die folgende Abhängigkeit von "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>

Danke im Voraus

Antworten auf die Frage(8)

Ihre Antwort auf die Frage