En quoi «package propre mvn» et «installation propre mvn» sont-ils différents?

277

Quelles sont exactement les différences entre mvn clean packageet mvn clean install? Lorsque j'exécute ces deux commandes, elles semblent toutes les deux faire la même chose.

Ben
la source
12
Veuillez consulter Introduction au cycle de vie de construction - Référence du cycle de vie et recherchez packageet install.
Charlee Chitsuk
3
Un package (le compile dans la cible) et sur les installations (le compile et le place dans votre référentiel) Vous devez le faire plus tard si vous souhaitez utiliser cette version dans un autre module.
Peter Lawrey
3
Peut-être que cela devrait être rouvert? Il est parfaitement possible de répondre et je n'ai pas eu de difficulté à répondre. De plus, si quelqu'un est nouveau pour Maven, il est facile de voir comment les deux phases semblent faire la même chose. Je vais le modifier pour essayer de le rendre moins vague.
Daniel Kaplan

Réponses:

371

Eh bien, les deux vont nettoyer. Cela signifie qu'ils vont supprimer le dossier cible. La vraie question est quelle est la différence entre le package et l'installation?

packagecompilera votre code et le conditionnera également. Par exemple, si votre pom indique que le projet est un bocal, il créera un bocal pour vous lorsque vous le conditionnerez et le placerez quelque part dans le répertoire cible (par défaut).

installcompilera et conditionnera, mais il placera également le package dans votre référentiel local. Cela permettra à d'autres projets de s'y référer et de le récupérer dans votre référentiel local.

Documentation

Daniel Kaplan
la source
Pourquoi l'installation de mvn est-elle plus rapide que le package mvn?
lostintranslation
9
@SharadHolani car les builds sont incrémentiels. mvn clean installn'est pas plus rapide que mvn package.
OrangeDog
Pour mon projet, l'assemblage du paquet mvn: simple qui construit le gros pot prend plus de temps qu'une installation mvn. Empaqueter et installer les deux pots de graisse équivalents?
lostintranslation
1
@RakeshYadav oui c'est le cas
Daniel Kaplan
117

Ce que fait Clean (commun dans les deux commandes) - supprime tous les fichiers générés par la version précédente


En ce qui concerne la différence entre le package de commandes et l' installation , vous devez d'abord comprendre le cycle de vie d'un projet maven


Ce sont les phases de cycle de vie par défaut dans Maven

  • valider - valider le projet est correct et toutes les informations nécessaires sont disponibles
  • compile - compile le code source du projet
  • test - testez le code source compilé en utilisant un cadre de test unitaire approprié. Ces tests ne devraient pas exiger que le code soit empaqueté ou déployé
  • package - prenez le code compilé et empaquetez-le dans son format distribuable, tel qu'un JAR.
  • vérifier - effectuer des vérifications sur les résultats des tests d'intégration pour s'assurer que les critères de qualité sont respectés
  • install - installe le package dans le référentiel local, pour une utilisation en tant que dépendance dans d'autres projets localement
  • deploy - fait dans l'environnement de construction, copie le package final dans le référentiel distant pour le partager avec d'autres développeurs et projets.

Comment Maven fonctionne, si vous exécutez une commande pour l'une des phases du cycle de vie, il exécute chaque phase du cycle de vie par défaut dans l'ordre, avant d'exécuter la commande elle-même.

ordre d'exécution

valider >> compiler >> tester (facultatif) >> package >> vérifier >> installer >> déployer

Ainsi, lorsque vous exécutez le package de commande mvn , il exécute les commandes pour toutes les phases du cycle de vie jusqu'au package

valider >> compiler >> tester (facultatif) >> package

Et comme pour l' installation mvn , il exécute les commandes pour toutes les phases du cycle de vie jusqu'à l'installation, qui comprend également le package

valider >> compiler >> tester (facultatif) >> package >> vérifier >> installer


Donc, ce que cela signifie, les commandes d' installation font tout ce que fait la commande de package et quelques autres (installez le package dans le référentiel local, pour l'utiliser comme dépendance dans d'autres projets localement)

Source: référence du cycle de vie Maven

Ketan R
la source
1
Cela devrait être marqué comme réponse acceptée. Cela définit clairement et aide l'OP à comprendre quelles sont les différentes phases du cycle de vie de maven et pourquoi l'installation de mvn inclut le package mvn mais pas l'inverse.
Jasmeet Singh
1
Maven en bref, super!
CodeSlave
19

le package générera Jar / war selon le fichier POM. install installera le fichier jar généré dans le référentiel local pour les autres dépendances éventuelles.

la phase d' installation vient après la phase de package

Abdul Gafoor
la source
le premier emballage aura lieu, puis ces packages (jar / war) seront installés.
Abdul Gafoor
1
"La phase d'installation suit la phase de package". La façon dont il est actuellement formulé est à l'envers. "Suivi de" signifie "après".
Charles Wood
11

Le package et l'installation sont différentes phases du cycle de vie de la construction maven. La phase de package exécutera toutes les phases avant cela et elle s'arrêtera avec le conditionnement du projet sous forme de bocal. De même, la phase d'installation exécutera toutes les phases précédentes et installera enfin le projet localement pour les autres projets dépendants.

Pour comprendre le cycle de vie de la construction de maven, veuillez consulter le lien suivant https://ayolajayamaha.blogspot.in/2014/05/difference-between-mvn-clean-install.html

Aarish Ramesh
la source
1
Qu'entendez-vous par «et enfin installer le projet localement pour d'autres projets dépendants»
Arun Gowda
2
@ArunGowda signifie que dans le .m2 qui est créé dans votre système lors de l'installation du maven sera ajouté avec les projets que vous empaquetez et sera disponible pour d'autres projets en tant que dépendance.
JAVA
une image est un 1000 mots, quelqu'un a un diagramme?
@MrCholo mvn install mettra le pot / war dans votre dépôt maven . L'endroit où toutes vos dépendances Maven sont stockés, généralement ~ / .m2
BRT
6

packageajoutera emballé jarou warà votre targetdossier, nous pouvons le vérifier quand, nous viderons le dossier cible (en utilisant mvn clean) puis exécuter mvn package.
installfera tout ce qui se packagefait, en plus il ajoutera également un packaged jarou warun dépôt local. Nous pouvons le confirmer en archivant votre .m2dossier.

Nisarg Patil
la source