mvn clean install vs deploy vs release

132

J'apprends juste des maven, et nous avons récemment eu besoin d'aller de plus en plus. J'aimerais connaître la différence entre

mvn clean install

mvn release

mvn deploy

Veuillez être aussi descriptif que possible.

myusuf3
la source

Réponses:

223

Les phasesclean , installet sont des deploy phases de cycle de vie valides et leur invocation déclenchera toutes les phases qui les précèdent et les objectifs liés à ces phases.

installation propre mvn

Cette commande appelle la cleanphase puis la installphase séquentiellement:

  • clean: supprime les fichiers générés lors de la construction dans le répertoire d'un projet ( targetpar défaut)
  • install: installe le package dans le référentiel local , pour une utilisation en tant que dépendance dans d'autres projets localement .

déployer mvn

Cette commande appelle la deployphase:

  • deploy: copie le package final dans le référentiel distant pour le partager avec d'autres développeurs et projets .

sortie mvn

Ce n'est ni une phase valide ni un objectif donc cela ne fera rien. Mais si fait référence au Maven Release Plugin qui est utilisé pour automatiser la gestion des versions. La libération d'un projet se fait en deux étapes: prepareet perform. Comme documenté:

La préparation d'une version passe par les phases de publication suivantes:

  • Vérifiez qu'il n'y a pas de modifications non validées dans les sources
  • Vérifiez qu'il n'y a pas de dépendances SNAPSHOT
  • Changez la version dans les POM de x-SNAPSHOT à une nouvelle version (vous serez invité à indiquer les versions à utiliser)
  • Transformez les informations SCM dans le POM pour inclure la destination finale de la balise
  • Exécutez les tests de projet contre les POM modifiés pour confirmer que tout est en ordre de marche
  • Valider les POM modifiés
  • Marquer le code dans le SCM avec un nom de version (cela vous sera demandé)
  • Bump la version dans les POM à une nouvelle valeur y-SNAPSHOT (ces valeurs seront également demandées)
  • Valider les POM modifiés

Puis:

L'exécution d'une version exécute les phases de publication suivantes:

  • Paiement à partir d'une URL SCM avec balise facultative
  • Exécutez les objectifs Maven prédéfinis pour publier le projet (par défaut, déployer le site-deploy)

Voir également

Pascal Thivent
la source
1
Pouvez-vous clarifier ceci: ce n'est pas une phase valide ni un objectif donc cela ne fera rien. Mais si fait référence au plugin Maven Release. Si ce n'est ni une phase ni un objectif, comment l'appellerons-nous?
gvlasov
26
  • mvn installmettra votre projet maven packagé dans le référentiel local , pour une application locale utilisant votre projet comme dépendance.
  • mvn release mettra essentiellement votre code actuel dans une balise sur votre SCM, changez votre version dans vos projets.
  • mvn deploymettra votre projet maven packagé dans un référentiel distant pour le partager avec d'autres développeurs.

Ressources :

Colin Hebert
la source