Aquí es mi problema genérico:Maven: cómo reemplazar la dependencia añadido por una biblioteca
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 que declaró la dependencia de D.
Importante: En este caso, no solo se cambia la versión, sino también el artefacto del grupo &. Por lo tanto, no se trata solo de anular la versión de la dependencia, sino más bien de excluir un módulo e incluir otro.
En el caso concreto, D es StAX cuyo 1.0.1 tiene un bug. De acuerdo con 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 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 asuntos.
salida de la dependencia 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 POM de mi proyecto que tiene la siguiente dependencia de la "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 de antemano
no está claro cómo puedo especificar la versión ya que no declaro una dependencia en D. Además, el primer enlace que proporcionó tiene "Este documento describe el resto de los requisitos para la administración de dependencias que aún NO se han implementado para Maven 2.0, especialmente en lo que respecta a las dependencias transitivas ". en la cima. – wishihadabettername
@wishihadabettername, como se dijo en el otro documento: "Se podría agregar explícitamente una dependencia a D 2.0 en A para forzar el uso de D 2.0" –
Usted realmente duplica la misma entrada en su propio pom. En su dependencia, especifique un que desee. Eso anulará cualquier versión utilizada por dependencias "más profundas". –