Aquí está mi problema genérico:
Mi proyecto P depende de A, que depende de B, que depende de C, que depende de la versión 1.0.1 de D.
Hay un problema con la versión 1.0.1 de D y quiero forzar el uso de otro módulo. No sé cómo declarar esto en los POM de mi proyecto ya que no he agregado una dependencia en D directamente. Es C quien declaró la dependencia de D.
Importante: En este caso, no solo se cambia la versión, sino también el grupo y el artefacto. Entonces, no se trata solo de anular la versión de la dependencia, sino de excluir un módulo e incluir otro.
En el caso concreto, D es StAX cuyo 1.0.1 tiene un error . Según las notas en el error, "los problemas se resolvieron reemplazando el stax-api-1.0.1 (maven GroupId = stax) por stax-api-1.0-2 (maven GroupId = javax.xml.stream)", así que Estoy intentando precisamente eso.
Por lo tanto, D = stax: stax-api: jar: 1.0.1 y C = org.apache.xmlbeans: xmlbeans: jar: 2.3.0
Estoy usando maven 2.0.9 en caso de que importe.
Salida de la dependencia de mvn: árbol "
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
En el POM de mi proyecto tengo la siguiente dependencia 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>
Gracias por adelantado.