Qu'est-ce qu'un entrepôt Maven
Lorsque nous n'utilisons pas de maven, par exemple, dans le passé, nous avons utilisé pour construire des projets avec ANT, nous voyons souvent un sous-répertoire appelé / lib, qui stocke divers fichiers de pot de dépendance tiers, tels que log4j.jar, junit.jar, etc.
Chaque fois que vous construisez un projet, vous devez créer un tel répertoire un tel répertoire, puis copier une paire de fichiers JAR, ce qui est une duplication évidente. La répétition est toujours le point de départ d'un cauchemar. Plusieurs projets ne partagent pas le même fichier JAR, qui non seulement provoquera un gaspillage de ressources de disque, mais rendra également la gestion de la cohérence des versions.
De plus, si vous utilisez des outils de gestion de version tels que SVN (vous n'utilisez pas d'outils de gestion de version? Essayez SVN maintenant, il peut vous aider à résoudre de nombreux maux de tête), vous devez soumettre un grand nombre de fichiers JAR à la bibliothèque de code, mais les outils de gestion de version ne sont pas excellents pour gérer les fichiers binaires.
Le référentiel Maven est l'endroit où tous les fichiers JAR (guerre, zip, pom, etc.) sont placés. Tous les projets Maven peuvent obtenir le pot de dépendance dont ils ont besoin du même référentiel Maven, ce qui économise les ressources disque. De plus, puisque tous les pots du référentiel Maven ont leurs propres coordonnées, qui indiquent à Maven son ID de groupe, ID de composant, version, méthode d'emballage, etc., le projet Maven peut facilement effectuer la gestion de la version de dépendance. Vous n'êtes pas obligé de soumettre des fichiers JAR au référentiel SCM, vous pouvez créer un référentiel Maven au niveau de l'organisation pour tous les membres.
En bref, le référentiel Maven nous aide à gérer les artefacts (principalement des pots).
Dans Maven, la sortie de toute dépendance, plug-in ou construction de projet peut être appelée un composant.
Maven stocke tous les composants partagés de tous les projets dans un emplacement unifié. Cet emplacement unifié est appelé entrepôt. (L'entrepôt est l'endroit où les dépendances et les plug-ins sont stockés)
Tout composant a une coordonnée unique. Maven définit le chemin de stockage unique du composant dans l'entrepôt en fonction de cette coordonnée.
Interpréter le chemin de stockage de Maven dans le référentiel:
1. Préparez le chemin basé sur GroupID, convertissez le séparateur de période en séparateur de chemin, c'est-à-dire convertir "." à "/" ; Exemple: org.testng ---> org / testng
2. Préparez le chemin basé sur Artifactid et connectez Artifactid à l'arrière: org / testng / testng
3. Utilisez la version pour préparer le chemin et connecter la version à l'arrière: org / testng / testng / 5.8
4. Connectez l'artefactive à la version avec un trait d'union du séparateur à l'arrière: org / testng / testng / 5.8 / tesng-5.8
5. Juger si le composant dispose d'un classificateur, ajoutez le trait d'union du séparateur après l'article 4 et ajoutez le classificateur, org / testng / testng / 5.8 / Tesng-5.8-JDK5
6. Vérifiez l'extension du composant. Si l'extension existe, ajoutez le séparateur de période et l'extension. L'extension est déterminée par emballage, org / testng / testng / 5.8 / Tesng-5.8-JDK5.jar
À ce stade, nous comprenons les détails du stockage des composants de Maven.
Classification de l'entrepôt Maven:
L'entrepôt de Maven n'a que deux catégories: 1. Entrepôt local 2. Entrepôt à distance, qui est divisé en trois types dans des entrepôts à distance: 2.1 Central Warehouse 2.2 Server privé 2.3 Autres entrepôts publics
1. L'entrepôt local, comme son nom l'indique, est l'endroit où Maven stocke les composants localement.
Remarque: le référentiel local de Maven ne sera pas créé après l'installation de Maven. Il n'est créé que lorsque la commande maven est exécutée pour la première fois.
L'emplacement par défaut du référentiel local Maven: qu'il s'agisse de Windows ou Linux, il existe un répertoire .m2 / référentiel / référentiel dans le répertoire de l'utilisateur. Il s'agit de l'emplacement par défaut du référentiel Maven.
Comment changer l'emplacement du référentiel local par défaut de Maven: Ici, nous voulons introduire un nouvel élément: LocalRepository, qui existe dans le fichier SetfitS.XML de Maven
1.1 Modifiez le référentiel local qui configure à l'échelle de l'utilisateur: Créez d'abord des paramètres.xml Fichier dans /.m2/, puis définissez la valeur de l'élément localRepository sur l'adresse du référentiel souhaité dans ~ / .m2 / settings.xml.
<messings> <localRepository> d: / maven_new_repository </ localRepository> </daits>
À l'heure actuelle, l'adresse du référentiel local de Maven devient d: / maven_new_repository. Remarque: Le référentiel local de Maven configuré à l'heure actuelle appartient à la portée de l'utilisateur.
1.2 Modifier la configuration Référentiel local à l'échelle mondiale: modifiez la configuration dans M2_HOME / conf / Settings.xml, la méthode de modification de la configuration est la même que ci-dessus
Remarque: Après cette modification, tous les utilisateurs seront affectés et si Maven est mis à niveau, toutes les configurations seront effacées, vous devez donc copier et sauvegarder le fichier M2_Home / Conf / Settings.xml à l'avance.
Par conséquent: dans des circonstances normales, la configuration des paramètres globaux.xml n'est pas recommandée.
2. Référentiel distant
2.1 En ce qui concerne les entrepôts éloignés, commencez par l'entrepôt central le plus central. L'entrepôt central est l'entrepôt à distance par défaut. Lorsque Maven est installé, il est livré avec la configuration de l'entrepôt central.
Dans l'agrégation et l'héritage de Maven, nous avons dit que tous les projets Maven hériteront du Super Pom. Plus précisément, si le POM qui contient les configurations suivantes, nous l'appelons Super POM
<Depositories> <Fepository> <id> Central </id> <name> Central Repository </name> <url> http://repo.maven.apache.org/maven2 </url> <onquet> par défaut </ Layout> <Snapshots> <velow
L'entrepôt central contient des composants Java open source les plus populaires, ainsi que le code source, les informations sur l'auteur, SCM, les informations, les informations de licence, etc. De manière générale, les dépendances simples du projet Java peuvent être téléchargées ici
2.2 Server privé
Le serveur privé est un entrepôt à distance spécial. Il s'agit d'un service d'entrepôt mis en place dans le LAN. Les serveurs privés représentent des entrepôts à distance sur le WAN pour les utilisateurs de Maven dans le LAN. Lorsque Maven doit télécharger des composants, il demande le serveur privé. Si le composant n'existe pas sur le serveur privé, il téléchargera à partir d'un référentiel distant externe, mettra en cache sur le serveur privé, puis fournira des services à la demande de téléchargement de Maven. Nous pouvons également télécharger certains composants qui ne peuvent pas être téléchargés à partir d'entrepôts externes vers des serveurs privés.
Caractéristiques du serveur privé Maven:
1. Enregistrez votre propre bande passante de réseau externe: Réduisez la consommation de bande passante du réseau externe causée par des demandes répétées
2. Accélérer le composant Maven: Si le projet est configuré avec de nombreux entrepôts à distance externes, la vitesse de construction sera considérablement réduite.
3. Déployer des composants tiers: Lorsque certains composants ne peuvent pas être obtenus à partir d'entrepôts externes, nous pouvons déployer ces composants dans des entrepôts internes (serveurs privés) pour une utilisation par des projets Maven internes.
4. Améliorer la stabilité et améliorer le contrôle: lorsque Internet est instable, la construction Maven deviendra également instable. Certains logiciels de serveur privé fournissent également d'autres fonctions.
5. Réduire la charge de l'entrepôt central: le nombre de demandes d'entrepôts centraux Maven est énorme, et la configuration des serveurs privés peut également réduire considérablement la pression de l'entrepôt central.
Le serveur privé Maven grand public actuel:
1. Archiva d'Ampache
2.JFROG's Arfactory
3. Nexus de Sonatype
3. Configuration de l'entrepôt à distance
La configuration du référentiel distant introduira de nouveaux éléments de configuration: <Depositories> <Repository>
Sous l'élément <fepositories>, vous pouvez utiliser l'élément enfant <Fopostory> pour déclarer un ou plusieurs référentiels distants.
exemple:
<Fepository> <id> jboss </ id> <name> jboss Repository </name> <url> http://repository.jboss.com/maven2/ </url> <elease> <datedatePolicy> quotidien </ updatePolicy> <! <ChatySumpolicy> Warn </ Checksumpolicy> <! - Échec, ignore -> </ releases> <napshots> <veabled> false </velable> </napshots> <payout> Default </ Layout> </ Repository> </ Repository> </ Repository>
<datedatePolicy> élément: représente la fréquence de mise à jour, les valeurs sont: jamais, toujours, intervalle, quotidien, quotidiennement sont les valeurs par défaut
Élément <InckeSumpolicy>: représente la politique de Maven pour vérifier et vérifier les fichiers. Warn est la valeur par défaut pour des raisons de sécurité. Parfois, nous devons authentifier l'accès à l'entrepôt distant. Généralement, les informations d'authentification sont configurées dans Settings.xml:
<Servers> <Server> <Id> Idem avec l'ID de référentiel dans POM </id> <nom d'utilisateur> nom d'utilisateur </sername> <mot de passe> pwd </sOord> </ server> </ serveurs>
Remarque: L'ID ici doit être cohérent avec l'ID de l'élément de référentiel qui doit être authentifié dans le POM.
Comment déployer des projets générés vers des référentiels distants
Pour terminer ce travail, vous devez également le configurer dans le POM. Voici un nouvel élément: <DistributionManagement>
DistributionManagement contient 2 éléments enfants: référentiel et instantanée. Le premier représente le référentiel pour publier le composant de version, et le second représente le référentiel pour la version instantanée.
Les deux éléments doivent configurer l'ID (l'identifiant unique du référentiel distant), nom, URL (représentant l'adresse du référentiel)
Le déploiement de composants dans des entrepôts distants nécessite une authentification. La configuration est la même que ci-dessus
Exécuter une fois la configuration correcte: MVN Clean Deploy
Regardez correctement les instantanés
Avant, lors de la configuration de POM, nous étions très prudents quant à la configuration des instantanés, ou nous avons rarement utilisé la version instantanée. La raison en est qu'il est toujours très instable et est très facile à provoquer des erreurs inconnues à notre système, ce qui nous rend difficile à trouver. En fait, la version instantanée n'est pas inutile. Le plus grand objectif de l'instantané est d'être utilisé dans le processus de développement, en particulier lorsqu'il existe des dépendances du module. Par exemple, A et B sont développés simultanément. A dépend de B. Pendant le processus de développement, A et B sont constamment un développement intégré, modifiant constamment les fichiers POM et les projets de construction. À l'heure actuelle, la synchronisation des versions devient un gros problème. Cela peut être réalisé en utilisant des instantanés.
En fait, lors de la version de la version instantanée, Maven marquera automatiquement le composant avec l'horodatage actuel. Avec cet horodatage, nous pouvons trouver la dernière version instantanée à tout moment, ce qui résoudra le problème du développement collaboratif que je viens de mentionner.
Quant à la façon dont A vérifie la mise à jour de B, je viens de dire lors de la configuration de la configuration qu'il existe un élément dans la configuration instantanée qui peut contrôler la fréquence des mises à jour de vérification -------- UpdatePolicy
Nous pouvons également utiliser la ligne de commande pour ajouter des paramètres pour forcer Maven pour vérifier les mises à jour: mvn clean install-U
Comment les composants Maven d'analyse de l'entrepôt de l'entrepôt? ---- Mécanisme de Maven pour l'analyse des dépendances du référentiel
1. Lorsque la portée de la dépendance est le système, Maven résout directement le composant du système de fichiers local.
2. Après avoir calculé le chemin de l'entrepôt en fonction des coordonnées de dépendance, essayez de trouver des composants directement à partir de l'entrepôt local. Si le composant correspondant est trouvé, la résolution réussira.
3. Dans le cas où il n'y a pas de composant correspondant dans le référentiel local, si la version dépendante est le composant de version de version affichée, itère dans tous les référentiels distants et le télécharge après découverte.
4. Si la version dépendante est publiée ou plus récente, les métadonnées de tous les référentiels distants sont lues en fonction de la politique de mise à jour, fusionnez les métadonnées correspondantes du référentiel local, calculez la vraie valeur de la version ou plus récente, puis vérifiez le référentiel local en fonction de cette véritable valeur.
5. Si la version dépendante est un instantané, les métadonnées de tous les référentiels distants sont lues en fonction de la stratégie de mise à jour, fusionnez-la avec les métadonnées correspondantes du référentiel local et obtenez la valeur de la dernière version instantanée, puis vérifiez le référentiel local en fonction de la valeur ou téléchargez-le à partir du référentiel à distance.
6. Si la dernière version d'artefacts analysé est un instantané du format horodat-tenue, copiez le fichier dans son format d'horodatage dans un format non-timetamp et utilisez l'artefact dans ce format non-timetamp.
Remarque: assurez-vous de vous souvenir de <fecdre> <veable> & <napshot> <veable>, il en va de même pour les instantanés
Le dernier et la version ne sont pas recommandés lors de la déclaration de POM. La dernière et la version dans la configuration du plug-in n'est plus prise en charge dans Maven3. Si la version plug-in n'est pas définie, la version finale est la même que la version.
Maven analysera uniquement les dernières constructions de version.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.