Comment Maven résout les dépendances transitives des fichiers JAR
Date de publication:
Mise à jour :
Articles > Comment Maven résout automatiquement les dépendances des bibliothèques jar.
Statut 2026 et utilisation sûre
Conclusion : Maven ne découvre pas les JAR arbitraires par nom de fichier. Il résout les coordonnées déclarées, télécharge l'artefact POM, suit les dépendances de ce POM, applique la portée et les règles facultatives et utilise la médiation des dépendances lorsque plusieurs chemins demandent des versions différentes.
Ce que vous apprendrez
- Comment les dépôts locaux, centraux, miroirs et privés participent à la résolution.
- Pourquoi le POM d'une dépendance (et non le JAR lui-même) décrit la plupart des exigences transitives.
- Comment inspecter le graphique effectif avant de remplacer une version.
À qui s'adresse : les utilisateurs Maven qui souhaitent comprendre d'où proviennent les artefacts téléchargés et pourquoi des bibliothèques supplémentaires apparaissent.
Position 2026 : Les anciennes coordonnées de POI Apache ci-dessous restent utiles comme exemple historique, et non comme recommandation de version. Utilisez les dépendances actuellement prises en charge, les référentiels HTTPS fiables, les contrôles de somme de contrôle/signature lorsqu'ils sont disponibles et une politique de mise à jour des dépendances.
Note de sécurité : les commandes et exemples de configuration de l'article d'origine n'ont pas été rejoués dans un environnement de production actuel. Avant toute application, vérifiez les versions prises en charge, les sauvegardes, les contrôles d'accès et la procédure de retour arrière dans un environnement de test isolé.
Sources primaires officielles
Vue d’ensemble
Maven télécharge automatiquement les fichiers JAR et leurs dépendances depuis des dépôts. Cette section détaille le mécanisme de résolution.
Si les notions de POM, d’artefact ou de cycle de vie ne vous sont pas encore familières, commencez par l’introduction suivante.
Apache Maven : POM, cycle de vie et dépendances
Table des matières
1. Résolution des dépendances de bibliothèques JAR avec Maven
Il suffit de déclarer une dépendance dans pom.xml : Maven télécharge l’artefact demandé ainsi que ses dépendances transitives.
1-1. Ce qu'il faut inclure dans le fichier pom.xml.
Les dépendances sont déclarées dans pom.xml à l’aide de leurs coordonnées Maven. L’exemple ci-dessous demande Apache POI 3.17, une bibliothèque utilisée pour manipuler notamment des documents Microsoft Office.
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
À partir de cette déclaration, Maven récupère l’artefact "poi-3.17.jar" ainsi que les dépendances transitives nécessaires à son fonctionnement.
1-2. Comment sont-elles téléchargées sur Internet ?
Une explication simple du système est présentée dans le schéma ci-dessous.
Maven résout les artefacts dans les dépôts configurés. Sans configuration supplémentaire, il utilise Maven Central, accessible à l’adresse suivante.
https://repo1.maven.org/maven2/
Consultez le site web suivant pour obtenir une liste des dépôts disponibles sur Internet si vous êtes intéressé.
https://mvnrepository.com/repos
La première fois, le jar est récupéré à partir d'un référentiel externe, mais il est copié dans le référentiel local et n'est plus récupéré à partir de la deuxième fois. L'emplacement du référentiel local est "C:\Users\user\.m2".
Si vous voulez changer la destination par rapport à la valeur par défaut, vous pouvez également changer la destination en incluant la balise repository suivante dans pom.xml.
<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
</snapshots>
</repository>
</repositories>
1-3. Résolution des dépendances d’un artefact JAR
Nous venons de décrire un exemple d'obtention de 'poi-3.17.jar', mais 'poi-3.17.jar' nécessite 'commons-collections4-4.1.jar' pour fonctionner. Cela signifie que "poi-3.17.jar" dépend de "commons-collections4-4.1.jar". Le mécanisme de résolution de cette dépendance se trouve dans le référentiel Maven où est stocké le fichier 'poi-3.17.jar'. L'URL est la suivante.
https://repo1.maven.org/maven2/org/apache/poi/poi/3.17/
Le dépôt contient également "poi-3.17.pom". Maven lit ce POM, constate la dépendance vers "commons-collections4-4.1.jar", puis répète la résolution pour les dépendances requises. Le graphe obtenu peut être contrôlé avant de forcer une version.
2. Conclusion
Le POM du projet indique les artefacts directs, tandis que les POM publiés dans les dépôts décrivent leurs dépendances transitives. Maven résout ce graphe, télécharge les fichiers requis et les conserve dans le dépôt local.
