2009-10-09 10 views
22

Uwaga: To pytanie zostało oryginalnie przesłane przez Lahiru Gunathilake jako answer do innego question. Przenoszę to tutaj jako oddzielne pytanie dla zachowania przejrzystości.Jeśli uruchamiam mvn deploy, czy tworzy on nowe artefakty, czy po prostu wdraża już istniejące artefakty na zdalny serwer?

Kiedy robimy wydanie, po prostu budujemy na naszym lokalnym komputerze i wykonujemy kontrolę jakości, a następnie udostępniamy je w repozytorium. Jeśli uruchomimy mvn deploy, utworzy on nowe artefakty, co spowoduje odmienny artefakt w repozytorium i dystrybucji binarnej, ponieważ tworzymy dystrybucję binarną z naszego lokalnego repozytorium. Ale jeśli ktoś dostanie kod źródłowy i zrobi kompilację, dostanie inny. Ale jeśli mvn deploy nie zbuduje, ale tylko wdroży, to jest w porządku.

Odpowiedz

27

Jak wyjaśniono w Build Lifecycle Basics:

cyklu życia budowy składa się z faz

Każdy z nich zbudować cykle jest określona przez inną listą z fazy budowy, w którym w fazie budowy reprezentuje etap w cyklu życia.

Na przykład, domyślny cyklu ma następującą budowę faz (pełną listę faz budowy, odnoszą się do Lifecycle Reference):

  • validate - zatwierdzić projekt jest poprawny i wszystkie niezbędne informacje są dostępne
  • compile - kompilacji kodu źródłowego projektu
  • test - test skompilowany kodu źródłowego, za pomocą odpowiednich ram testowania urządzenia. Testy te nie powinny wymagać, aby kod był pakowany lub wdrażany.
  • package - pobierz skompilowany kod i spakuj go w swoim formacie, który można rozpowszechniać, na przykład JAR.
  • integration-test - proces i wdrożyć pakiet w razie potrzeby w środowisku, w którym testy integracyjne można uruchomić
  • verify - uruchamiać żadnych kontroli w celu sprawdzenia pakiet jest poprawny i spełnia kryteria jakości
  • install - zainstalować pakiet do lokalnego repozytorium, do użytku jako zależność w innych projektach lokalnie
  • deploy - wykonane w środowisku integracji lub wydania, kopiuje ostateczny pakiet do zdalnego repozytorium w celu współdzielenia z innymi programistami i projektami.

Te fazy kompilacji (oraz inne fazy budowy, które nie zostały tu pokazane) są wykonywane sekwencyjnie w celu zakończenia domyślnego cyklu życia. Biorąc pod uwagę powyższe etapy budowy, oznacza to, że gdy używany jest domyślny cykl życia, Maven najpierw sprawdzi poprawność projektu, a następnie spróbuje skompilować źródła, uruchomić je w oparciu o testy, spakować pliki binarne (np. Jar), ​​przeprowadzić testy integracyjne przeciw temu pakiet, sprawdź pakiet, zainstaluj zweryfikowany pakiet do lokalnego repozytorium, a następnie zainstaluj zainstalowany pakiet w określonym środowisku.

Aby zrobić tych wszystkich, wystarczy tylko zadzwonić ostatnia faza budowy mają być wykonane, w tym przypadku, wdrażać:

mvn deploy 

To dlatego, że jeśli zadzwonisz fazę budowania, będzie wykonywał nie tylko w fazie budowy, ale także w każdej fazie budowy przed fazą zwaną budową.

Więc odpowiedź brzmi tak, mvn deploy wykona install i budować artefaktów projektu. Ale jeśli niczego nie zmienisz, stworzy to dokładnie ten sam artefakt.

Powiązane problemy