La forma correcta es usar el mecanismo de exclusiones, sin embargo, a veces puede preferir utilizar el siguiente hack para evitar agregar un gran número de exclusiones cuando muchos artefactos tienen la misma dependencia transitiva que desea ignorar. En lugar de especificar una exclusión, define una dependencia adicional con un alcance de "proporcionado". Esto le dice a Maven que se encargará manualmente de proporcionar este artefacto en tiempo de ejecución y por lo tanto no se empacará. Por ejemplo:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
<scope>provided</scope>
</dependency>
Efecto secundario: Debe especificar una versión del artefacto-a-ser-ignorados, y su POM se recuperarán durante la acumulación de tiempo; este no es el caso con exclusiones regulares. Esto podría ser un problema para usted si ejecuta su repositorio privado Maven detrás de un firewall.
He intentado excluir servlet-api de una dependencia de jar mediante el método ole y eso no funcionó, pero probé este método y lo resolvió. Gracias. –
Aaron
esto funcionó para mí cuando tuve que excluir una dependencia basada en. ¡Gracias! –
También podría usar _system_ scope, si su dependencia está incluida en el JRE. Por ejemplo, con jaxb-api 2.0 y JRE 6. Ver [Dependencias del sistema Maven] (http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#System_Dependencies) –