Maven - Dépôts

Qu'est-ce qu'un référentiel Maven?

Dans la terminologie Maven, un référentiel est un répertoire dans lequel tous les fichiers JAR du projet, les fichiers JAR de la bibliothèque, les plugins ou tout autre artefact spécifique au projet sont stockés et peuvent être utilisés facilement par Maven.

Les référentiels Maven sont de trois types. L'illustration suivante vous donnera une idée de ces trois types.

  • local
  • central
  • remote

Dépôt local

Le référentiel local Maven est un emplacement de dossier sur votre machine. Il est créé lorsque vous exécutez une commande maven pour la première fois.

Le référentiel local Maven conserve toutes les dépendances de votre projet (jars de bibliothèque, jars de plugins, etc.). Lorsque vous exécutez une build Maven, Maven télécharge automatiquement tous les fichiers JAR de dépendance dans le référentiel local. Cela permet d'éviter les références aux dépendances stockées sur une machine distante à chaque fois qu'un projet est généré.

Le référentiel local Maven est créé par défaut par Maven dans le répertoire% USER_HOME%. Pour remplacer l'emplacement par défaut, mentionnez un autre chemin dans le fichier Maven settings.xml disponible dans le répertoire% M2_HOME% \ conf.

<settings xmlns = "http://maven.apache.org/SETTINGS/1.0.0"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://maven.apache.org/SETTINGS/1.0.0 
   http://maven.apache.org/xsd/settings-1.0.0.xsd">
   <localRepository>C:/MyLocalRepository</localRepository>
</settings>

Lorsque vous exécutez la commande Maven, Maven téléchargera les dépendances sur votre chemin personnalisé.

Dépôt central

Le référentiel central Maven est un référentiel fourni par la communauté Maven. Il contient un grand nombre de bibliothèques couramment utilisées.

Lorsque Maven ne trouve aucune dépendance dans le référentiel local, il commence la recherche dans le référentiel central en utilisant l'URL suivante - https://repo1.maven.org/maven2/

Les concepts clés du référentiel central sont les suivants:

  • Ce référentiel est géré par la communauté Maven.
  • Il n'est pas nécessaire de le configurer.
  • Il nécessite un accès Internet pour être recherché.

Pour parcourir le contenu du référentiel maven central, la communauté maven a fourni une URL - https://search.maven.org/#browse. En utilisant cette bibliothèque, un développeur peut rechercher toutes les bibliothèques disponibles dans le référentiel central.

Référentiel distant

Parfois, Maven ne trouve pas non plus une dépendance mentionnée dans le référentiel central. Il arrête ensuite le processus de construction et envoie un message d'erreur à la console. Pour éviter une telle situation, Maven propose un concept deRemote Repository, qui est le propre référentiel personnalisé du développeur contenant les bibliothèques requises ou d'autres fichiers JAR de projet.

Par exemple, en utilisant POM.xml mentionné ci-dessous, Maven téléchargera la dépendance (non disponible dans le référentiel central) à partir des référentiels distants mentionnés dans le même pom.xml.

<project xmlns = "http://maven.apache.org/POM/4.0.0"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.projectgroup</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <dependencies>
      <dependency>
         <groupId>com.companyname.common-lib</groupId>
         <artifactId>common-lib</artifactId>
         <version>1.0.0</version>
      </dependency>
   <dependencies>
   <repositories>
      <repository>
         <id>companyname.lib1</id>
         <url>http://download.companyname.org/maven2/lib1</url>
      </repository>
      <repository>
         <id>companyname.lib2</id>
         <url>http://download.companyname.org/maven2/lib2</url>
      </repository>
   </repositories>
</project>

Séquence de recherche de dépendances Maven

Lorsque nous exécutons les commandes de construction Maven, Maven commence à rechercher des bibliothèques de dépendances dans la séquence suivante -

  • Step 1 - Rechercher une dépendance dans le référentiel local, si elle n'est pas trouvée, passez à l'étape 2 sinon effectuez le traitement ultérieur.

  • Step 2 - Rechercher les dépendances dans le référentiel central, si elles ne sont pas trouvées et que le référentiel / référentiel distant est / sont mentionné, passez à l'étape 4. Sinon, il est téléchargé dans le référentiel local pour référence future.

  • Step 3 - Si un référentiel distant n'a pas été mentionné, Maven arrête simplement le traitement et renvoie une erreur (Impossible de trouver la dépendance).

  • Step 4- Rechercher la dépendance dans le référentiel ou les référentiels distants, si elle est trouvée, elle est téléchargée dans le référentiel local pour référence future. Sinon, Maven arrête le traitement et renvoie une erreur (impossible de trouver la dépendance).