Je suis nouveau sur Maven, j'ai un projet Web basé sur Java avec maven configuré dans mon MyEclipse.
Maintenant, si j'ai modifié des fichiers java, dois-je faire Run as -> Mvn install
ou Mvn package
?
134
depuis 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
: installez le package dans le référentiel local, pour l'utiliser comme dépendance dans d'autres projets localement
Donc, la réponse à votre question est, cela dépend si vous voulez qu'il soit installé dans votre dépôt local. Install exécutera également le package car il est plus haut dans la pile de phase d'objectif.
deploy
fait. Si vous le remplacez parpackage
, il ne sera pas déployé sur Nexus.mvn install
est l'option la plus souvent utilisée.mvn package
est rarement utilisé, uniquement si vous déboguez un problème avec le processus de construction maven.Voir: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
Notez que
mvn package
cela ne créera qu'un fichier jar.mvn install
fera cela et installera les fichiers jar (et class etc.) aux bons endroits si un autre code dépend de ces jars.Je fais habituellement un
mvn clean install
; cela supprime letarget
répertoire et recrée tous les fichiers JAR à cet emplacement.Le nettoyage aide avec les choses inutiles ou supprimées qui peuvent parfois gêner.
Plutôt que de déboguer (parfois), recommencez à zéro tout le temps.
la source
À partir de la référence du cycle de vie , l' installation exécutera les tests d'intégration du projet, contrairement au package .
Si vous ne devez vraiment pas installer les artefacts générés, utilisez au moins verify .
la source
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 build échouera, car lorsque vous utilisez la commande install, le module A sera empaqueté et déployé sur le 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.
la source
Si vous n'êtes pas à l' aide d' un distant dépôt (comme Artifactory), utilisez ancienne plaine:
mvn clean install
Sujet assez ancien mais AFAIK, si vous exécutez votre propre référentiel (par exemple: avec artificiel) pour partager le fichier jar entre vos équipes, vous voudrez peut-être utiliser
mvn clean deploy
au lieu.
De cette façon, votre serveur d'intégration continue peut être sûr que toutes les dépendances sont correctement transféré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.
la source
package - prend le code compilé et le conditionne dans son format distribuable, tel qu'un fichier JAR ou WAR. install - installe le package dans le référentiel local, pour l'utiliser comme dépendance dans d'autres projets localement
la source
La bonne façon est que
mvn package
si vous avez fait les choses correctement pour la partie principale de votre build, il ne devrait pas être nécessaire d'installer vos paquets dans le référentiel local.De plus si vous utilisez Travis vous pouvez "mettre en cache" vos dépendances car cela ne vous touchera pas
$HOME.m2/repository
si vous utilisez package pour votre propre projet.En pratique, si vous essayez même de faire un,
mvn site
vous devez généralement faire unmvn install
avant. Il y a tout simplement trop de bogues avec l'unsite
ou l' autre des plugins mal entretenus.la source
Cela dépend de ce que vous essayez d'accomplir après avoir modifié le fichier Java. Tant que vous ne voulez pas tester le processus maven, vous n'avez rien à faire. Eclipse / MyEclipse construira ce qui est nécessaire et placera la sortie à l'endroit 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 à faire quoi que ce soit explicitement avec maven. En fin de compte, pour installer votre projet dans le référentiel maven, vous devrez faire 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 l'ai dit, cela dépend de ce que vous voulez faire.
la source