La bonne façon est d'utiliser le mécanisme des exclusions, mais parfois vous préférerez peut-être utiliser le hack suivant pour éviter d'ajouter un grand nombre d'exclusions lorsque de nombreux artefacts ont la même dépendance transitive que vous souhaitez ignorer. Plutôt que de spécifier une exclusion, vous définissez une dépendance supplémentaire avec une portée de "fournie". Cela indique à Maven que vous prendrez manuellement soin de fournir cet artefact lors de l'exécution et qu'il ne sera donc pas empaqueté. Par exemple:
<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>
Effet secondaire: vous devez spécifier une version de l'artefact-être à ignoré, et son POM seront récupérés au moment de la construction; ce n'est pas le cas avec les exclusions régulières. Cela peut être un problème pour vous si vous exécutez votre référentiel Maven privé derrière un pare-feu.
J'ai essayé d'exclure servlet-api d'une dépendance de pot par la méthode ole et cela n'a pas fonctionné pour moi mais a essayé cette méthode et il a fait l'affaire. Merci. –
Aaron
cela a fonctionné pour moi quand j'ai dû exclure une dépendance basée sur un. Merci! –
Vous pouvez également utiliser la portée _system_ si votre dépendance est incluse dans le JRE. Par exemple avec jaxb-api 2.0 et JRE 6. Voir [Dépendances du système Maven] (http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#System_Dependencies) –