Dépendance facultative dans Maven

1. Vue d'ensemble

Ce bref didacticiel décrira les et comment nous pouvons l'utiliser pour réduire la taille et la portée de l'artefact d'un projet Maven, tel qu'un WAR, EAR ou JAR.

Pour un rappel sur Maven, consultez notre guide complet.

2. Qu'est-ce que ?

Parfois, nous allons créer un projet Maven pour être une dépendance pour d'autres projets Maven. Lorsque vous travaillez sur un tel projet, il peut être nécessaire d'inclure une ou plusieurs dépendances qui ne sont utiles que pour un sous-ensemble des fonctionnalités de ce projet.

Si un utilisateur final n'utilise pas ce sous-ensemble de fonctionnalités, le projet extrait toujours ces dépendances de manière transitoire. Cela gonfle inutilement la taille du projet de l'utilisateur et peut même introduire des versions de dépendance conflictuelles avec d'autres dépendances de projet.

Idéalement, nous devrions diviser le sous-ensemble de fonctionnalités du projet dans son propre module et donc ne pas polluer le reste du projet. Cependant, ce n'est pas toujours pratique.

Afin d'exclure ces dépendances spéciales du projet principal, nous pouvons appliquer Maven's tag à eux. Cela oblige tout utilisateur souhaitant utiliser ces dépendances à les déclarer explicitement. Cependant, cela ne force pas ces dépendances dans un projet qui n'en a pas besoin.

3. Comment utiliser

Comme nous allons le voir, nous pouvons inclure le avec une valeur true pour rendre toute dépendance Maven facultative.

Supposons que nous ayons le projet pom suivant:

 ... project-with-optionals ...   com.baeldung optional-project 0.0.1-SNAPSHOT true   

Dans cet exemple, bien que facultatif-project soit étiqueté comme optionnel, il reste comme une dépendance utilisable de project-with-optionnel comme si le tag n'était jamais là.

Afin de voir l'effet de la tag, nous devons créer un nouveau projet qui dépend de project-with-optionnels :

 ... main-project ...   com.baeldung project-with-optionals 0.0.1-SNAPSHOT   

Maintenant, si nous essayons de référencer un projet optionnel depuis le projet principal , nous voyons que le projet optionnel n'existe pas. C'est parce que le tag l'empêche d'être inclus de manière transitoire

Si nous constatons que nous avons besoin d' un projet optionnel dans notre projet principal , nous devons simplement le déclarer comme une dépendance.

4. Conclusion

Dans cet article, nous avons regardé Maven's marque. Les principaux avantages de l'utilisation de la balise sont qu'elle peut réduire la taille d'un projet et aider à éviter les conflits de version. Nous avons également vu que la balise n'affecte pas le projet qui l'utilise.

Le code source de cet article est disponible à l'adresse over sur Github.