Mon équipe utilise un référentiel interne d’équipe partagé à partir d’un serveur de développement utilisant Apache. Nous exécutons également le serveur Continuum CI sur la même machine. Les builds Maven dans Continuum sont exécutés avec l’objective “install”, qui copie l’artefact final directement dans le répertoire partagé.
La question est la suivante: quelle est la différence entre l’ajout de fichiers au référentiel partagé à l’aide de mvn install et l’utilisation de l’objective de déploiement (plug-in mvn-deploy)?
Il me semble que l’utilisation de mvn deploy crée des problèmes de configuration supplémentaires, mais j’ai lu quelque part que l’installation de fichiers dans un référentiel partagé est une mauvaise idée pour certaines raisons liées au fonctionnement interne de maven.
mise à jour: j’obtiens les différences fonctionnelles entre le déploiement et l’installation; Je suis en fait plus intéressé par les détails de bas niveau en termes de quels fichiers sont créés dans le repository maven.
Ken, bonne question. Je devrais être plus explicite dans le Guide définitif sur la différence. “installer” et “déployer” servent à deux fins différentes dans une génération. “install” fait référence au processus d’installation d’un artefact dans votre référentiel local. “deploy” fait référence au processus de déploiement d’un artefact sur un référentiel distant.
Exemple:
Lorsque je lance un grand projet multi-module sur une machine, je vais généralement lancer “mvn install”. Cela va installer tous les artefacts de logiciels binarys générés (généralement des JAR) dans mon référentiel local. Ensuite, lorsque je construis des modules individuels dans la construction, Maven va récupérer les dépendances à partir du référentiel local.
Au moment de déployer des instantanés ou des versions, je vais lancer “mvn deploy”. L’exécution de ce programme va tenter de déployer les fichiers sur un référentiel ou un serveur distant. D’habitude, je vais me déployer sur un gestionnaire de référentiel tel que Nexus
Il est vrai que l’exécution de “deploy” nécessitera une configuration supplémentaire, vous devrez fournir une section dissortingbutionManagement dans votre POM.
À partir des documents Maven , cela ressemble à une différence dans le référentiel dans lequel vous installez le package:
Peut-être y a-t-il une certaine confusion dans le fait que “l’installation” sur le serveur CI l’installe dans son référentiel local, que vous partagez en tant qu’utilisateur?
“matt b” a raison, mais pour être précis, l’objective “install” copie votre cible intégrée dans le référentiel local de votre système de fichiers; utile pour les petits changements entre les projets qui ne sont pas actuellement destinés à l’ensemble du groupe.
L’objective «déployer» le charge dans votre référentiel partagé lorsque votre travail est terminé, puis peut être partagé par d’autres personnes qui en ont besoin pour leur projet.
Dans votre cas, il semble que “install” soit utilisé pour faciliter la gestion du déploiement puisque le référentiel local de CI est le référentiel partagé. Si CI était sur une autre case, il devrait utiliser l’objective «déployer».