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
?
Réponses
Trop de publicités?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.
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.
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 .
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.
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.
- Réponses précédentes
- Plus de réponses