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
?
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
?
Réponses:
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 par package
, 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 le target
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.
À 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 .
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.
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.
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 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 un mvn install
avant. Il y a tout simplement trop de bogues avec l'un site
ou l' autre des plugins mal entretenus.
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.