web-dev-qa-db-fra.com

Mvn install ou package Mvn

Je suis nouveau sur Maven, j’ai un projet Web basé sur Java avec maven configuré dans mon MyEclipse.
Maintenant, si j'ai modifié un fichier Java, dois-je alors faire Run as -> Mvn install ou Mvn package?

119
user2192023

de http://maven.Apache.org/guides/getting-started/maven-in-five-minutes.html

package: prenez le code compilé et empaquetez-le dans son format distribuable, tel qu'un JAR.

install: installe le paquet dans le référentiel local, pour l'utiliser comme dépendance dans d'autres projets localement

Donc, la réponse à votre question est que cela dépend si vous voulez l’installer dans votre dépôt local. L'installation exécutera également le package car il est plus élevé dans la pile de la phase d'objectif.

149
ezcodr

mvn install est l'option la plus souvent utilisée.
mvn package est rarement utilisé, uniquement si vous résolvez des problèmes avec le processus de construction maven.

Voir: http://maven.Apache.org/guides/introduction/introduction-to-the-lifecycle.html

Notez que mvn package ne créera qu'un fichier jar.
mvn install fera cela et installera les fichiers jar (et la classe, etc.) aux endroits appropriés si l'autre code en dépend sur ces pots.

Je fais habituellement un mvn clean install; cela supprime le répertoire target et recrée tous les fichiers JAR situés à cet emplacement.
Le nettoyage aide les choses inutiles ou enlevées qui peuvent parfois gêner.
Plutôt que de déboguer (de temps en temps), recommencez tout juste depuis le début.

30
Johan

A partir du référence du cycle de vie , , install exécutera les tests d'intégration du projet, , le package ne sera pas.

Si vous devez réellement ne pas installer les artefacts générés, utilisez au moins verify .

8
dna

Notez également que si votre projet est composé de plusieurs modules qui dépendent les uns des autres, vous devez utiliser "install" au lieu de "package", sinon votre construction échouera, car lorsque vous utilisez la commande install, le module A sera empaqueté. et déployé dans un référentiel local, puis si le module B a besoin du module A en tant que dépendance, il peut y accéder à partir du référentiel local.

5
Mr.Q

Si vous utilisez pas utilisez un référentiel distant (comme un artefact), utilisez plain old: mvn clean install

Sujet assez ancien, mais autant que je sache, si vous utilisez votre propre référentiel (par exemple: avec artifactory) pour partager jar avec votre (vos) équipe (s), vous voudrez peut-être utiliser

mvn clean deploy

au lieu.

De cette manière, votre serveur d'intégration continue peut être sûr que toutes les dépendances sont correctement placées dans votre référentiel distant. Si vous en avez manqué un, mvn ne pourra pas le trouver dans votre référentiel m2 local CI.

4
user1853859

package - prend le code compilé et le conditionne dans son format distribuable, tel qu'un fichier JAR ou WAR. install - installe le paquet dans le référentiel local pour l'utiliser comme dépendance dans d'autres projets localement

2
Elilmatha Sivanesan

La manière correcte est mvn package si vous avez effectué les tâches correctement pour la partie principale de votre construction, il ne devrait pas être nécessaire d'installer vos packages dans le référentiel local.

De plus, si vous utilisez Travis, vous pouvez "mettre en cache" vos dépendances, car elles ne toucheront pas votre $HOME.m2/repository si vous utilisez un package pour votre propre projet.

En pratique, si vous essayez même de faire un mvn site, vous devez généralement faire un mvn install avant. Il y a tout simplement trop de bogues avec soit site, soit de nombreux plugins mal entretenus.

1

Cela dépend de ce que vous essayez d’obtenir après avoir modifié le fichier Java. Tant que vous ne souhaitez pas tester le processus Maven, vous ne devez jamais rien faire. Eclipse/MyEclipse construira ce qui est nécessaire et placera la sortie à l'emplacement approprié dans votre projet. Vous pouvez également l'exécuter ou le déployer (s'il s'agit d'un projet Web, par exemple), sans que vous ayez besoin de faire explicitement quoi que ce soit avec maven. En fin de compte, pour installer votre projet dans le référentiel maven, vous devrez effectuer une installation maven. Vous pouvez également avoir d’autres objectifs maven que vous souhaitez exécuter, ce que MyEclipse ne fera pas automatiquement.

Comme je le dis, cela dépend de ce que vous voulez faire.

0
Tony Weddle