2012-04-10 4 views
7

Par exemple je dépendance:dépendance Maven: exclure une classe

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.5.6</version> 
</dependency> 

Puis-je exclure une classe, par exemple org/slf4j/Marker.class?

+0

'exclure' pendant quelle phase - compiler ou paquet? – Raghuram

+0

paquet en .ear, en utilisant maven-ear-plugin – Ilya

+1

hmm! ce dont vous avez besoin dans le .ear est le 'slf4j-api.jar' sans la classe spécifiée. Il n'y a pas de moyen simple d'y parvenir. – Raghuram

Répondre

3

Hors une seule classe pas possible. Dans <dependency> étiquettes, vous pouvez définir <exclusions/>. Cependant, ce sont des dépendances entières.

Le module d'ombrage doit être manipulé avec précaution. En règle générale, il n'est pas recommandé de créer un fichier contenant toutes vos dépendances à un seul endroit car cela peut entraîner des problèmes si vous utilisez l'artefact produit dans un autre projet en tant que dépendance. Par exemple, ombrer slf4j dans votre pot, puis en fonction de votre artefact dans un autre projet où vous avez un autre slf4j vous apportera du chagrin.

2

Vous pouvez modifier ces classes et les définir dans un autre jar/module qui doit être inclus en tant que dépendance avant le le jar qui fournit la dépendance où réside la classe à exclure (Marker.class). Maven se souvient de l'ordre des classes de la version 2.0.9.

Questions connexes