Czym różnią się „mvn clean package” i „mvn clean install”?

277

Jakie dokładnie są różnice między mvn clean packagei mvn clean install? Kiedy uruchamiam oba te polecenia, oba wydają się robić to samo.

Ben
źródło
12
Proszę spojrzeć na Wprowadzenie do cyklu życia kompilacji - odniesienie cyklu życia i szukać packagei install.
Charlee Chitsuk
3
Jeden pakiet (buduje go w miejscu docelowym) i podczas instalacji (pakiety i umieszcza go w twoim repozytorium) Musisz zrobić to później, jeśli chcesz użyć tej wersji w innym module.
Peter Lawrey
3
Może to powinno zostać ponownie otwarte? Odpowiedź jest całkowicie możliwa i nie miałem trudności z odpowiedzią. Ponadto, jeśli ktoś jest zupełnie nowy w maven, łatwo zobaczyć, jak te dwie fazy wydają się robić to samo. Zedytuję go, aby uczynić go mniej niejasnym.
Daniel Kaplan

Odpowiedzi:

371

Cóż, oba posprzątają. Oznacza to, że usuną folder docelowy. Prawdziwe pytanie brzmi: jaka jest różnica między pakietem a instalacją?

packageskompiluje kod, a także go zapakuje. Na przykład, jeśli twój pom mówi, że projekt jest słoikiem, utworzy słoik dla ciebie, gdy go spakujesz i umieścisz gdzieś w katalogu docelowym (domyślnie).

installskompiluje i zapakuje, ale umieści także pakiet w lokalnym repozytorium. Dzięki temu inne projekty będą mogły do ​​niego odwoływać się i pobierać je z lokalnego repozytorium.

Dokumentacja

Daniel Kaplan
źródło
Dlaczego więc mvn instaluje się szybciej niż pakiet mvn?
lostintranslation
9
@SharadHolani, ponieważ kompilacje są przyrostowe. mvn clean installnie jest szybszy niż mvn package.
OrangeDog,
W moim projekcie montaż pakietu mvn: pojedynczy, który buduje gruby słoik, trwa dłużej niż instalacja mvn. Czy spakuj i zainstaluj oba równoważne słoiki tłuszczu?
lostintranslation
1
@RakeshYadav tak to robi
Daniel Kaplan
116

Co robi clean (wspólne dla obu poleceń) - usuwa wszystkie pliki wygenerowane przez poprzednią kompilację


Jeśli chodzi o różnicę między pakietem poleceń a instalacją , najpierw musisz zrozumieć cykl życia projektu maven


Są to domyślne fazy cyklu życia w maven

  • sprawdź poprawność - sprawdź poprawność projektu i dostępne są wszystkie niezbędne informacje
  • kompiluj - skompiluj kod źródłowy projektu
  • test - przetestuj skompilowany kod źródłowy za pomocą odpowiedniego szkieletu testów jednostkowych. Te testy nie powinny wymagać pakowania ani wdrażania kodu
  • pakiet - weź skompilowany kod i spakuj go w formacie do rozpowszechnienia, takim jak JAR.
  • weryfikacja - uruchom wszelkie kontrole wyników testów integracyjnych, aby upewnić się, że spełnione są kryteria jakości
  • install - zainstaluj pakiet w lokalnym repozytorium, aby używać go jako zależności w innych projektach lokalnie
  • wdrożenie - wykonane w środowisku kompilacji, kopiuje końcowy pakiet do zdalnego repozytorium w celu udostępnienia go innym programistom i projektom.

Działanie Maven polega na tym, że jeśli uruchomisz polecenie dla którejkolwiek z faz cyklu życia, wykonuje ono każdą domyślną fazę cyklu w kolejności przed wykonaniem samego polecenia.

kolejność wykonania

sprawdź >> kompiluj >> test (opcjonalnie) >> pakiet >> zweryfikuj >> zainstaluj >> wdróż

Kiedy więc uruchomisz pakiet komend mvn , uruchomi on komendy dla wszystkich faz cyklu życia aż do pakietu

sprawdź poprawność >> kompilacja >> test (opcjonalnie) >> pakiet

A jeśli chodzi o instalację mvn , uruchamia polecenia dla wszystkich faz cyklu życia do instalacji, która obejmuje również pakiet

sprawdź >> skompiluj >> test (opcjonalnie) >> pakiet >> zweryfikuj >> zainstaluj


Tak więc, efektywnie, co to oznacza, komendy instalacyjne wykonują wszystko, co robi komenda pakietu i jeszcze więcej (zainstaluj pakiet w lokalnym repozytorium, aby używać go jako zależności w innych projektach lokalnie)

Źródło: odniesienie do cyklu życia Maven

Ketan R.
źródło
1
To powinno być oznaczone jako zaakceptowana odpowiedź. To jasno określa i pomaga PO zrozumieć, jakie są różne fazy cyklu życia maven i dlaczego instalacja mvn obejmuje pakiet mvn, ale nie na odwrót.
Jasmeet Singh,
1
Maven w pigułce, świetnie!
CodeSlave,
19

pakiet wygeneruje Jar / war zgodnie z plikiem POM. install zainstaluje wygenerowany plik jar w lokalnym repozytorium dla innych zależności, jeśli takie istnieją.

faza instalacji następuje po fazie pakietu

Abdul Gafoor
źródło
nastąpi pierwsze opakowanie, a następnie te pakiety (jar / war) zostaną zainstalowane.
Abdul Gafoor,
1
„Faza instalacji następuje po fazie pakietu”. Sposób, w jaki jest obecnie wyrażony, jest odwrotny. „Następujący po” oznacza „po”.
Charles Wood,
11

Pakiet i instalacja to różne etapy cyklu życia maven. faza pakietu wykona wszystkie fazy przed tym i zakończy się pakowaniem projektu jako słoika. Podobnie faza instalacji wykona wszystkie wcześniejsze fazy i ostatecznie zainstaluje projekt lokalnie dla innych zależnych projektów.

Aby zapoznać się z cyklem życia kompilacji maven, przejdź przez poniższy link https://ayolajayamaha.blogspot.in/2014/05/difference-between-mvn-clean-install.html

Aarish Ramesh
źródło
1
Co masz na myśli przez „i wreszcie zainstaluj lokalnie projekt dla innych zależnych projektów”
Arun Gowda
2
@ArunGowda oznacza, że ​​w .m2, który jest tworzony w twoim systemie po instalacji maven, zostaną dodane do projektów, które pakujesz i będą dostępne dla innych projektów jako zależność.
JAVA,
obraz to 1000 słów, ktoś ma schemat?
Instalacja @MrCholo mvn umieści jar / war w repozytorium maven. Miejsce, w którym przechowywane są wszystkie twoje zależności od maven, zwykle ~ / .m2
brt
6

packagedoda spakowane jarlub wardo twojego targetfolderu, możemy to sprawdzić, kiedy opróżnimy folder docelowy (za pomocą mvn clean), a następnie uruchomimy mvn package.
installzrobi wszystko, co packagerobi, a także doda pakiety jarlub warlokalne repozytorium. Możemy to potwierdzić, sprawdzając w .m2folderze.

Nisarg Patil
źródło