Il modo corretto è usare il meccanismo delle esclusioni, tuttavia a volte potresti preferire usare il seguente trucco per evitare di aggiungere un gran numero di esclusioni quando molti artefatti hanno la stessa dipendenza transitiva che vuoi ignorare. Piuttosto che specificare un'esclusione, si definisce una dipendenza aggiuntiva con un ambito di "fornito". Questo dice a Maven che si prenderà cura manualmente di fornire questo artefatto in fase di runtime e quindi non sarà pacchettizzato. Per esempio:
<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>
Effetto collaterale: è necessario specificare una versione del manufatto-to-be-ignorato, e la sua POM saranno recuperati a l'accumulo di tempo; questo non è il caso delle esclusioni regolari. Questo potrebbe essere un problema per te se esegui il tuo repository Maven privato dietro un firewall.
Ho cercato di escludere servlet-api da una dipendenza jar dal metodo ole e che non ha funzionato per me, ma ho provato questo metodo e ha fatto il trucco. Grazie. –
Aaron
questo ha funzionato per me quando ho dovuto escludere una dipendenza basata su un. Grazie! –
È anche possibile utilizzare l'ambito _system_, se la dipendenza è inclusa in JRE. Ad esempio con jaxb-api 2.0 e JRE 6. Vedere [Dipendenze del sistema Maven] (http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#System_Dependencies) –