Que fait exactement mvn install dans maven

165

Je viens de commencer à utiliser Maven et on m'a dit de le faire mvn installdans un répertoire spécifique.

Que fait mvn installexactement?

Je pense qu'il recherche pom.xmldans le dossier actuel et commence à suivre les instructions spécifiées dans ce fichier. Est-ce exact?

Rajeshwar
la source

Réponses:

124

Comme vous le savez peut-être, Maven est un outil d'automatisation de construction fourni par Apache qui fait plus que la gestion des dépendances. Nous pouvons le faire en tant que pair de Ant et Makefile qui télécharge toutes les dépendances requises.

Sur a mvn install, il encadre une arborescence de dépendances basée sur la configuration du projet pom.xmlsur tous les sous-projets sous le super pom.xml(le POM racine) et télécharge / compile tous les composants nécessaires dans un répertoire appelé .m2sous le dossier de l'utilisateur. Ces dépendances devront être résolues pour que le projet soit construit sans aucune erreur, et mvn installest un utilitaire qui pourrait télécharger la plupart des dépendances.

De plus, il existe d'autres utilitaires dans Maven comme dependency:resolvequi peuvent être utilisés séparément dans tous les cas spécifiques. Le cycle de vie de construction du mvn est le suivant: Liaisons LifeCycle

  1. process-resources
  2. compile
  3. process-test-resources
  4. test-compile
  5. test
  6. package
  7. install
  8. deploy

La phase de test de ce mvn peut être ignorée en utilisant un indicateur -DskipTests=true.

uniqrish
la source
9
Juste une note latérale, si vous voulez sauter tous les objectifs liés au test, utilisez: -Dmaven.test.skip = true (au lieu de -DskipTests = true)
Manoj Shrestha
1
Cette réponse ne parvient pas à préciser que l'installation commande finalement installe l'artefact local, qui est, dans le référentiel local.
PeriChandra le
34

Avez-vous regardé l'un des documents Maven, par exemple, les documents du plugin d'installation maven ?

Version en bref: il construira le projet et l'installera dans votre référentiel local.

Dave Newton
la source
Disons que vous exécutez "mvn install" sur une bibliothèque open-source. Ensuite, vous exécutez "mvn install" sur un projet qui utilise la bibliothèque open-source que nous avons compilée en premier. Lors de l'exécution de "mvn install", les fichiers JAR seront-ils d'abord recherchés dans le dépôt local? Ou dépend-il du fichier POM?
Kevin Meredith
1
@Kevin Cela devrait d'abord être local, car c'est un peu le problème. S'il n'est pas dans le référentiel local, il recherchera dans les référentiels que vous avez configurés (ou les valeurs par défaut) et l'installera dans votre référentiel local s'il est trouvé. Je suppose que vous pourriez le configurer pour toujours ignorer le dépôt local, même si je ne sais pas comment sans le chercher.
Dave Newton
17
Avez- vous regardé les documents canoniques pour Maven? Le site d'Apache explique ainsi le but de mvn install: "Dans la plupart des cas, le but install: install ne nécessite aucune configuration, il a besoin du POM du projet et du fichier d'artefact à installer pendant la phase d'installation du cycle de vie de construction par défaut." C'est parce que la documentation d'Apache ne parvient pas à expliquer ce que fait réellement «mvn install» que des gens comme l'affiche, et moi-même, recherchons la réponse. Question parfaitement raisonnable.
bethesdaboys
6

L' install:installobjectif est fourni par «Apache Maven Install Plugin»:

Plug-in d'installation Apache Maven

Le plugin d'installation est utilisé pendant la phase d'installation pour ajouter des artefacts au référentiel local. L'installation Plugin utilise les informations contenues dans le POM ( groupId, artifactId, version) pour déterminer l'emplacement approprié pour l'artefact dans le référentiel local.

Le référentiel local est le cache local où sont stockés tous les artefacts nécessaires à la construction. Par défaut, il se trouve dans le répertoire personnel de l'utilisateur ( ~/.m2/repository) mais l'emplacement peut être configuré en ~/.m2/settings.xmlutilisant l' <localRepository>élément.

- Plugin d'installation Apache Maven - Introduction .

Cela dit, le but exact est:

install:install est utilisé pour installer automatiquement l'artefact principal du projet (le JAR, WAR ou EAR), son POM et tous les artefacts attachés (sources, javadoc, etc.) produits par un projet particulier.

- Plugin d'installation Apache Maven - Introduction .

Pour plus de détails sur l'objectif, reportez-vous à la page d' installation Apache Maven Install Plugin - install: install .

Pour plus de détails sur le cycle de vie de build en général et sur la place de l'objectif dans le cycle de vie de build, veuillez vous reporter à la page Maven - Introduction au cycle de vie de build .

Sergey Brunov
la source
3

Réponse courte

mvn installer

  • ajoute tous les artefacts (dépendances) spécifiés dans pom , au référentiel local (à partir de sources distantes).
Daniel Perník
la source
2

-DskipTests=true est une forme courte de -Dmaven.test.skip=true

Apportez des modifications dans Setting.xml dans votre dossier .m2 . Vous pouvez utiliser le lien vers le référentiel local afin que les fichiers jars une fois téléchargés ne soient pas téléchargés encore et encore.

<url>file://C:/Users/admin/.m2/repository</url>
 </repository>
Jyoti Prakash
la source
0

Les tâches principales d' installation de mvn consistent à 1) télécharger les dépendances et 2) construire le projet

pendant l' emploi 1 est aujourd'hui pris en charge par des identifiants comme intellij (ils téléchargent pour toute dépendance chez POM)

mvn install est maintenant principalement utilisé pour le travail 2 .

Aditya Rewari
la source