Aqui está meu problema genérico:
Meu projeto P depende de A, que depende de B, que depende de C, que depende da versão 1.0.1 de D.
Há um problema com a versão 1.0.1 de D e desejo forçar o uso de outro módulo. Não sei como declarar isso nos POMs do meu projeto, pois não adicionei uma dependência em D diretamente. É C que declarou dependência de D.
Importante: Neste caso, não apenas a versão é alterada, mas também o grupo e o artefato. Portanto, não é apenas uma questão de substituir a versão da dependência, mas sim de excluir um módulo e incluir outro.
No caso concreto, D é StAX cujo 1.0.1 tem um bug . De acordo com as notas no bug, "os problemas foram resolvidos substituindo o stax-api-1.0.1 (maven GroupId = stax) por stax-api-1.0-2 (maven GroupId = javax.xml.stream)" então eu estou tentando exatamente isso.
Assim, D = stax: stax-api: jar: 1.0.1 e C = org.apache.xmlbeans: xmlbeans: jar: 2.3.0
Estou usando o maven 2.0.9 caso seja importante.
Saída da dependência mvn: árvore "
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
No POM do meu projeto, tenho a seguinte dependência de "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>
Desde já, obrigado.