Comment vérifier les conflits de bibliothèques dans Maven
Date de publication:
Mise à jour :
Articles > Comment vérifier les conflits de bibliothèques dans Maven
Statut 2026 et utilisation sûre
Conclusion : Exécutez mvn dependency:tree pour inspecter le graphique résolu, puis identifiez le chemin qui a introduit la version inattendue. Corrigez délibérément la déclaration avec une dépendance directe mise à jour, dependencyManagement ou une exclusion étroitement justifiée.
Ce que vous apprendrez
- Comment la médiation de la « définition la plus proche » peut masquer une version transitive demandée.
- Comment la sortie détaillée et filtrée de l'arbre de dépendances réduit un conflit.
- Pourquoi la suppression des fichiers du référentiel local ou l'ajout d'exclusions aléatoires ne constituent pas une solution durable.
À qui s'adresse : les développeurs Java qui étudient les erreurs de liaison, les classes inattendues ou les versions transitives vulnérables.
Position 2026 : Les options du plugin varient selon la version, alors consultez la documentation actuelle du plugin de dépendance. Associez l’inspection des graphiques à un processus d’analyse de la composition logicielle approuvé par l’organisation ; une arborescence propre ne prouve pas en soi qu'une dépendance est sécurisée.
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
Comment vérifier les conflits de bibliothèques dans Maven. Maven résout automatiquement les dépendances pour la bibliothèque jar, mais la configuration par défaut ne vous informe pas des conflits. Voici comment vérifier les conflits de bibliothèque dans Maven dans de tels cas.
Table des matières
1. Lorsque des conflits de bibliothèque surviennent dans Maven
Maven résout automatiquement les dépendances des bibliothèques Java. La résolution automatique des dépendances signifie que si vous avez un fichier Jar dont vous avez besoin, il obtiendra automatiquement le Jar nécessaire pour exécuter ce Jar. Pour plus d'informations sur le fonctionnement de la résolution des dépendances de bibliothèques spécifiques, consultez l'article suivant.
Comment Maven résout automatiquement les dépendances des bibliothèques jar.
Toutefois, lorsque des conflits de bibliothèque surviennent, ils ne sont pas résolus automatiquement. De plus, si les paramètres ne sont pas en place, vous ne pouvez même pas détecter un conflit. Nous souhaitons vous décrire comment vérifier les conflits entre bibliothèques.
2. Comment vérifier
Il y a deux façons principales de vérifier les conflits de bibliothèque
- Introduction des plug-ins
- Confirmation de la pré-construction par commande.
L'option 'Installer les plug-ins' est une méthode permettant d'ajouter des paramètres à pom.xml. Vérifier avec une commande avant de construire" signifie littéralement vérifier manuellement avec une commande avant de construire. Cette section explique comment procéder concrètement.
2-1. Introduction des plug-ins
Les sites Web Maven suivants peuvent être utiles.
http://maven.apache.org/enforcer/enforcer-rules/dependencyConvergence.html
Ajoutez les paramètres suivants à pom.xml.
<project>
...
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0-M3</version>
<executions>
<execution>
<id>enforce</id>
<configuration>
<rules>
<dependencyConvergence/>
</rules>
</configuration>
<goals>
<goal>enforce</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
...
</project>
Si les paramètres ci-dessus sont insérés, l'erreur suivante se produit et la construction échoue s'il y a des conflits de bibliothèque au moment de la construction.
[WARNING]
Dependency convergence error for org.apache.commons:commons-collections4:4.1 paths to dependency are:
+-com.example.todo:todo-web:1.0.0-SNAPSHOT
+-org.apache.poi:poi:3.17
+-org.apache.commons:commons-collections4:4.1
and
+-com.example.todo:todo-web:1.0.0-SNAPSHOT
+-org.apache.commons:commons-collections4:4.0
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.DependencyConvergence failed with message:
Failed while enforcing releasability. See above detailed error message.
Si un build est appliqué sans plug-in, aucune erreur ne se produit et le build se termine normalement. Si vous voulez détecter les conflits, assurez-vous de configurer cette fonction.
2-2. Confirmation de la pré-construction par commande.
Les dépendances sont vérifiées par les commandes suivantes
mvn dependency:tree -Dverbose
et 'omitted for conflict' s'affiche s'il y a un conflit. Il est également possible de réduire la sortie aux seules zones où il y a des conflits, comme dans la commande suivante. Remarque : La commande 'find' est celle de Windows. Pour Linux, il s'agit de 'grep'.
mvn dependency:tree -Dverbose | find "omitted for conflict"
Les conflits de bibliothèques peuvent être vérifiés en regardant les résultats des commandes ci-dessus.
3. résumé
Si vous souhaitez détecter de manière fiable les conflits de bibliothèques, nous vous recommandons d'installer des plug-ins. L'introduction de plug-ins permet de s'assurer que tout conflit est remarqué, car la construction échouera.