Oto mój ogólny problem:
Mój projekt P zależy od A, który zależy od B, który zależy od C, który zależy od wersji 1.0.1 D.
Wystąpił problem z wersją 1.0.1 D i chcę wymusić użycie innego modułu. Nie wiem, jak to zadeklarować w plikach POM mojego projektu, ponieważ nie dodałem bezpośrednio zależności od D. To C zadeklarował zależność od D.
Ważne: w tym przypadku zmienia się nie tylko wersja, ale także grupa i artefakt. Więc nie chodzi tylko o nadpisanie wersji zależności, ale raczej o wykluczenie modułu i dołączenie innego.
W konkretnym przypadku D to StAX, którego 1.0.1 ma błąd . Zgodnie z uwagami w błędzie „problemy zostały rozwiązane poprzez zastąpienie stax-api-1.0.1 (maven GroupId = stax) przez stax-api-1.0-2 (maven GroupId = javax.xml.stream)”, więc ja Właśnie tego próbuję.
Zatem D = stax: stax-api: jar: 1.0.1 i C = org.apache.xmlbeans: xmlbeans: jar: 2.3.0
Używam maven 2.0.9 na wypadek, gdyby miało to znaczenie.
Wynik zależności mvn: drzewo "
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
W POM mojego projektu mam następującą zależność od „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>
Z góry dziękuję.