103 votes

Quelle est la différence entre "mvn deploy" dans un dépôt local et "mvn install"?

Mon équipe fait appel à une équipe interne repo maven qui est partagée à partir d'un serveur de développement à l'aide de Apache. Nous courons aussi le Continuum de CI de serveur sur la même machine. Maven construit dans le Continuum sont exécutés avec la "installer" l'objectif, qui copie le dernier artefact directement dans le répertoire partagé.

La question est, quelle est la différence entre l'ajout de fichiers à la partagé des pensions de l'aide mvn install et à l'aide de la déployer objectif (mvn-déployer plugin)?

Il me semble que l'utilisation de mvn deploy crée une configuration supplémentaire de soucis, mais j'ai lu quelque part que l'installation des fichiers dans un partagées repo est une mauvaise idée pour une raison liée au fonctionnement interne de maven.

mise à jour: je reçois les différences fonctionnelles entre les déployer et de les installer; je suis plus intéressé par les détails de bas niveau en termes de ce que les fichiers sont créés dans le repo maven.

189voto

Tim O'Brien Points 4769

Ken, bonne question. Je devrais être plus explicite dans Le Guide de référence sur la différence. "install" et "déployer" servent à deux fins différentes dans un build. "installation" désigne le processus d'installation d'un artefact dans votre dépôt local. "déployer" désigne le processus de déploiement d'un artefact à un dépôt distant.

Exemple:

  1. Quand je lance une grande multi-projet de module sur ma machine, je vais l'habitude de fonctionner "mvn install". Cela va installer le binaire généré logiciel artefacts (généralement des Pots) dans mon dépôt local. Puis, quand je construis des modules individuels dans la construction, Maven va récupérer les dépendances à partir du référentiel local.

  2. Quand vient le temps de déployer des instantanés ou des rejets, je vais courir "mvn deploy". L'exécution de ce va tenter de déployer les fichiers à un dépôt distant ou un serveur. D'habitude je suis sur le point de déployer un gestionnaire de référentiel comme les Nexus

Il est vrai que l'exécution de "déployer" va nécessiter une configuration supplémentaire, vous allez avoir à fournir un distributionManagement section dans votre POM.

20voto

matt b Points 73770

À partir de l'Maven docs, on dirait que c'est juste une différence en ce qui référentiel d'installer le package:

  • installer - installer le paquet dans le dépôt local, pour une utilisation en tant que dépendance dans d'autres projets à l'échelle locale
  • déployez - faire dans l'intégration ou la libération de l'environnement, des copies de la version finale pour le dépôt distant pour les partager avec d'autres développeurs et des projets.

Peut-être il ya une certaine confusion à cet "installer" pour le serveur CI s'installe à son dépôt local, puis vous en tant qu'utilisateur d'un partage?

5voto

Spencer Kormos Points 3082

"matt b" il a raison, mais pour être plus précis, le "installer" objectif des copies de votre bâti cible dans le dépôt local sur votre système de fichiers, ce qui est utile pour de petits changements à travers les projets actuellement pas destiné à l'ensemble du groupe.

Le "déployer" objectif télécharge sur votre espace de stockage partagé pour lorsque votre travail est terminé, et puis peut être partagé par d'autres personnes qui en ont besoin pour leur projet.

Dans votre cas, il semble que "installer" est utilisé pour rendre la gestion du déploiement facile depuis que CI repo local est partagé repo. Si CI était sur une autre zone, il devra utiliser "déployer" le but.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X