Вот моя общая проблема:
Мой проект P зависит от A, который зависит от B, который зависит от C, который зависит от версии 1.0.1 D.
Проблема с версией 1.0.1 из D и я хочу заставить использовать другой модуль. Я не знаю, как объявить это в моих проектах POM, так как я не добавил зависимость от D напрямую. Он C, который объявил зависимость от D.
Важно: в этом случае изменяется не только версия, но и группа и артефакт. Таким образом, это не просто вопрос переопределения версии зависимости, а, скорее, исключения модуля и включение другого.
В конкретном случае D - это StAX, у 1.0.1 есть bug. Согласно примечаниям в этой ошибке, "проблемы были решены путем замены stax-api-1.0.1 (maven GroupId = stax) на stax-api-1.0-2 (maven GroupId = javax.xml.stream)", поэтому я Я пытаюсь это сделать.
Таким образом, D = stax: stax-api: jar: 1.0.1 и C = org.apache.xmlbeans: xmlbeans: jar: 2.3.0
Я использую maven 2.0.9 в случае, если это имеет значение.
Вывод зависимости 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
В моем проекте POM у меня есть следующая зависимость от "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>
Спасибо заранее.