105 votes

Existe-t-il un moyen d'exclure une dépendance Maven de manière globale?

J'essaie de trouver un moyen "générique" d'exclure une dépendance transitive sans avoir à l'exclure de toutes les dépendances qui en dépendent. Par exemple, si je veux exclure slf4j, je procède comme suit:

   <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-jmx</artifactId>
    <version>3.3.2.GA</version>
    <exclusions>
      <exclusion>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
      </exclusion>
    </exclusions>
  </dependency>
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>3.4.0.GA</version>
    <type>jar</type>
    <exclusions>
      <exclusion>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
      </exclusion>
    </exclusions>
  </dependency>
 

C'est en partie pour nettoyer le fichier pom, pour éviter des problèmes à l'avenir avec l'ajout de dépendances par des personnes qui dépendent de cette dépendance exclue - et en oubliant de l'exclure.

Y a-t-il un moyen?

73voto

Joffer Points 547

Cela vous aide? http://jlorenzen.blogspot.com/2009/06/maven-global-excludes.html

"En supposant que je veux exclure avalon-cadre de ma GUERRE, je voudrais ajouter à la suite de mes projets POM avec une portée de fourni. Cela fonctionne dans toutes les dépendances transitives et vous permet de spécifier qu'une seule fois.

<dependencies>
  <dependency>
      <artifactId>avalon-framework</artifactId>
      <groupId>avalon-framework</groupId>
      <version>4.1.3</version>
      <scope>provided</scope>
  </dependency>
</dependencies>

Ceci fonctionne même lorsque le précisant dans le POM parent, qui empêchent les projets d'avoir à déclarer cela à tous les enfants de Pdm."

20voto

Guus Bloemsma Points 21

J'ai créé un pot vide et créé cette dépendance:

 <dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <scope>system</scope>
    <systemPath>${basedir}/src/lib/empty.jar</systemPath>
    <version>0</version>
</dependency>
 

Ce n'est pas parfait car vous avez désormais un fichier jar vide dans votre chemin de compilation / test. Mais ce n'est que cosmétique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X