2012-12-11 5 views
4

J'ai pom avec les dépendances déclarées A, B et C. Est-il possible de créer un profil qui supprime les dépendances, de sorte que quand je compile avec ce profil, je finis avec les dépendances compilées A et B (sans C)?Dépendance de suppression de profil Maven

+0

Votre question concerne la section '', n'est-ce pas? –

+0

Andrew Logvinov - Righ, les dépendances A, B, C sont déclarées dans la section , je veux supprimer la dépendance C en utilisant profile. Est-ce possible? – Kamil

Répondre

12

Je ne connais pas un moyen d'exclure les dépendances de niveau supérieur à l'intérieur d'un profil (<exlusions> n'est disponible que pour les dépendances transitives). Mais vous pouvez spécifier vos dépendances « normales » dans un profil par défaut et vos dépendances réduites dans un profil séparé comme par exemple:

<profiles> 

    <profile> 
     <id>default</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <dependencies> 
      <dependency> 
       <groupId>log4j</groupId> 
       <artifactId>log4j</artifactId> 
       <version>1.2.14</version> 
      </dependency> 
     </dependencies> 
    </profile> 

    <profile> 
     <id>excludeDependency</id> 
     <dependencies> 
     </dependencies> 
    </profile> 

</profiles> 

avec le profil de la compilation « excludeDependency » échouera si vous utilisez quelque part log4j.

Votre cas d'utilisation n'est pas clair. Peut-être que d'autres solutions comme optional dependencies ou provided dependencies répondront également à vos besoins. Jetez un oeil à ces possibilités.

+0

Ce serait la meilleure solution, je suppose. –

+0

Merci, ça répond à ma question – Kamil

1

Maven le profil sont additif au profil de base donc j'ai trouvé ce modèle de bonne utilisation des dépendances à l'exclusion:

<dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.14</version> 
    </dependency> 
</dependencies> 

<profiles> 
    <profile> 
     <id>Exclude</id> 
     <dependencies> 
      <dependency> 
       <groupId>log4j</groupId> 
       <artifactId>log4j</artifactId> 
       <version>1.2.14</version> 
       <scope>test</scope> 
      </dependency> 
     </dependencies> 
    </profile> 
</profiles> 

Ensuite, vous « exclure » la dépendance en changeant le champ d'essai. Ne convient pas à tous les usages, mais juste comme une autre option.