Comment vérifier les conflits de bibliothèques dans Maven


Date de publication:20 janvier 2021.



INFOMARTION > Comment vérifier les conflits de bibliothèques dans Maven

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
  2. Comment vérifier
  3. résumé

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. Je voudrais vous expliquer 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.

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. ※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.

Merci d'avoir regardé jusqu'à la fin.