149 votes

Mvn install ou Mvn package

Je suis nouveau dans Maven, j'ai un projet web basé sur Java avec maven configuré dans mon MyEclipse.
Si je modifie un fichier Java, dois-je faire ce qui suit ? Run as -> Mvn install ou Mvn package ?

177voto

ezcodr Points 1731

De http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

package : prendre le code compilé et l'empaqueter dans son format distribuable, tel qu'un JAR. format distribuable, tel qu'un JAR.

install installer le paquet dans le référentiel local, pour l'utiliser comme une dépendance dans d'autres projets locaux

La réponse à votre question est donc : cela dépend si vous voulez l'installer dans votre dépôt local. L'installation exécutera également le paquet parce qu'il est plus haut dans la pile de la phase d'objectif.

46voto

Johan Points 34755

mvn install est l'option la plus souvent utilisée.
mvn package est rarement utilisé, seulement si vous déboguez un problème avec le processus de construction de 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 le fera et installer les fichiers jar (et classe etc.) aux bons endroits si d'autres codes dépendent de ces jars.

Je fais habituellement un mvn clean install ; cela supprime le target et recrée tous les bocaux dans cet emplacement.
Le nettoyage permet de se débarrasser des éléments inutiles ou supprimés qui peuvent parfois faire obstacle.
Plutôt que de déboguer (une partie du temps), il suffit de repartir à zéro tout le temps.

17voto

dna Points 469

De la Référence au cycle de vie , installer exécutera les tests d'intégration du projet, paquet ne le fera pas.

Si vous avez vraiment besoin de ne pas installer les artefacts générés, utilisez au moins vérifier .

6voto

user3593084 Points 42

Vous devez également noter que si votre projet est composé de plusieurs modules qui sont dépendants 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 le dépôt local et ensuite si le module B a besoin du module A comme dépendance, il peut y accéder depuis le dépôt local.

4voto

user1853859 Points 161

Si vous êtes no en utilisant un à distance (comme artifactory), utilisez le bon vieux : mvn clean install

C'est un sujet assez ancien mais, à ma connaissance, si vous gérez votre propre dépôt (par exemple, avec artifactory) pour partager des bocaux entre vos équipes, vous pourriez utiliser

mvn clean deploy

à la place.

De cette façon, votre serveur d'intégration continue peut être sûr que toutes les dépendances sont correctement poussées dans votre dépôt distant. Si vous en avez oublié une, mvn ne sera pas capable de la trouver dans votre dépôt local m2 de CI.

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