2009-10-09 5 views
22

Note: Cette question a été initialement publiée par Lahiru Gunathilake en tant que answer à un autre question. Je le propose ici en tant que question séparée pour plus de clarté. Quand nous faisons une version, nous construisons simplement dans notre machine locale et faisons le QA et ensuite nous l'hébergeons dans le référentiel. Si nous exécutons mvn deploy cela crée-t-il de nouveaux artefacts, cette cause ayant un artefact différent dans le dépôt et dans la distribution binaire parce que nous créons la distribution binaire à partir de notre dépôt local. Mais si quelqu'un obtient le code source et fait la construction, il en obtiendra un autre. Mais si mvn deploy ne construit pas, mais seulement déployer c'est bien.Si j'exécute mvn deploy crée-t-il de nouveaux artefacts ou déploie-t-il les artefacts déjà existants sur le serveur distant?

Répondre

27

Comme expliqué dans Build Lifecycle Basics:

Un cycle de vie de construction est composé des phases

Chacun de ces construire des cycles de vie est défini par une liste différente des phases de construction, dans lequel une phase de construction représente un étape dans le cycle de vie.

Par exemple, le cycle de vie par défaut les éléments suivants sont construire des phases (pour une liste complète des phases de construction, reportez-vous à la Lifecycle Reference):

  • validate - valider le projet est correct et toutes les informations nécessaires sont disponibles
  • compile - compiler le code source du projet
  • test - tester le code source compilé à l'aide d'un cadre de test approprié. Ces tests ne devraient pas exiger que le code soit empaqueté ou déployé
  • package - prenez le code compilé et empaquetez-le dans son format distribuable, tel qu'un fichier JAR.
  • integration-test - processus et déployer le package si nécessaire dans un environnement où les tests d'intégration peuvent être exécutés
  • verify - exécuter des contrôles afin de vérifier le colis est valide et répond à des critères de qualité
  • install - installez le package dans local référentiel, à utiliser en tant que dépendance dans d'autres projets localement
  • deploy - effectué dans un environnement d'intégration ou de publication, copie le package final dans le référentiel distant pour le partager avec d'autres développeurs et projets.

Ces phases de construction (plus les autres phases de construction non représentées ici) sont exécutées séquentiellement pour compléter le cycle de vie par défaut. Étant donné les phases de construction ci-dessus, cela signifie que lorsque le cycle de vie par défaut est utilisé, Maven va d'abord valider le projet, puis essayer de compiler les sources, les exécuter par rapport aux tests, les binaires (ex. package, vérifiez le package, installez le package vérifié dans le référentiel local, puis déployez le package installé dans un environnement spécifié.

Pour faire tout, il vous suffit d'appeler la dernière phase de construction à exécuter, dans ce cas, le déploiement:

mvn deploy 

C'est parce que si vous appelez une phase de construction, il exécute non seulement cette phase de construction, mais aussi chaque phase de construction avant la phase de construction appelée.

Alors, la réponse est oui, mvn deploy exécutera install et construire les objets du projet. Mais si vous ne changez rien, cela produira exactement le même artefact.

Questions connexes