Comment Maven résout automatiquement les dépendances des bibliothèques jar.


Date de publication:17 janvier 2021.



INFOMARTION > Comment Maven résout automatiquement les dépendances des bibliothèques jar.

Vue d'ensemble.

Maven télécharge automatiquement les jars depuis l'internet, mais je voudrais expliquer comment cela fonctionne exactement.

Le principe de cet article est que vous devez comprendre ce qu'est Maven, donc si vous n'êtes pas familier avec Maven lui-même, vous devriez également vous référer à l'article suivant.

Qu'est-ce que Maven et que fait-il ?

Table des matières

  1. La capacité de Maven à résoudre les dépendances des bibliothèques jar.
  2. résumé

1. La capacité de Maven à résoudre les dépendances des bibliothèques jar.

Maven peut récupérer automatiquement les fichiers jar en définissant simplement les fichiers jar requis dans le fichier pom.xml. Il apprend aussi automatiquement les jars dépendants nécessaires à l'exécution de ce jar. Je voudrais vous expliquer comment cela fonctionne.

1-1. Ce qu'il faut inclure dans le fichier pom.xml.

Tout d'abord, pour résoudre la dépendance de la bibliothèque jar, des informations sont fournies dans le fichier pom.xml. Maven traite les informations du fichier pom.xml. Si "poi-3.17.jar" est nécessaire, par exemple, il est décrit dans pom.xml comme suit. (Par ailleurs, 'poi-3.17.jar' est un jar utilisé pour manipuler les fichiers Microsoft Office tels qu'Excel.)

pom.xml


<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.17</version>
</dependency>

En mentionnant simplement ce qui précède, vous téléchargerez "poi-3.17.jar" depuis l'Internet et vous téléchargerez également le jar d'accompagnement depuis l'Internet qui est nécessaire pour exécuter "poi-3.17.jar".

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.

Télécharger à partir des dépôts Maven disponibles sur Internet. Si rien n'est défini, la valeur par défaut est le Référentiel central. L'URL est la 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.

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. Mécanismes de résolution des dépendances du bocal à acquérir.

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/

Je pense que "poi-3.17.pom" est stocké, et dans ce fichier vous trouverez l'information que "poi-3.17.jar" dépend de "commons-collections4-4.1.jar". Cela signifie que lors de la récupération de 'poi-3.17.jar', le système ne récupère pas seulement le fichier jar, mais aussi le fichier pom et vérifie les autres fichiers jar nécessaires.

2. résumé

Le mécanisme de Maven pour résoudre les dépendances sur les bibliothèques jar est que les dépendances sont définies dans le fichier pom où sont stockés les fichiers jar à récupérer.

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