Czym różni się „mvn clean install” od „mvn install”?

208

Jaka jest różnica między mvn clean installi mvn install?

Leonid
źródło

Odpowiedzi:

214

cleanjest własną fazą cyklu życia kompilacji (którą można traktować jako akcję lub zadanie) w Maven. mvn clean installmówi Maven, aby wykonał cleanfazę w każdym module przed uruchomieniem installfazy dla każdego modułu.

Pozwala to wyczyścić wszystkie skompilowane pliki, które masz, upewniając się, że naprawdę kompilujesz każdy moduł od zera.

Władca
źródło
13
Zawsze myślałem, że zainstaluj, w tym czysty, jako jeden z jego etapów ... dopóki tego nie zobaczę
Junchen Liu
14
@shanyangqu Niestety, nie. cleanjest w osobnym cyklu życia , więc nie jest wywoływany domyślnie.
Władca
47

Maven pozwala określić cele lub fazy cyklu życia w wierszu poleceń (lub w obu).

cleani installsą to dwie różne fazy cyklu życia , z którymi powiązane są różne wykonania wtyczek (domyślnie lub jawnie w pliku pom.xml )

cleanFaza, na konwencji, ma dokonać kompilacji powtarzalne, czyli czyści wszystko, co zostało stworzone przez poprzednie buduje. W większości przypadków robi to poprzez wywołanie clean:clean, które usuwa katalog związany z ${project.build.directory}(zwykle nazywany „docelowym”)

Sean Patrick Floyd
źródło
6
„instalacja” nie jest cyklem życia. Jest to faza w domyślnym cyklu życia. Chociaż istnieje „czysty” cykl życia, AFAIK ten parametr określa fazę „czystego” cyklu „czystego”, a nie sam „czysty” cykl życia.
Puce
1
@Puce true, miałem na myśli „fazę”, a nie cykl życia
Sean Patrick Floyd
38

Możesz zadzwonić do więcej niż jednego celu docelowego za pomocą maven. najpierw mvn clean installdzwoni . Musisz wyczyścić ręcznie, ponieważ czyszczenie nie jest standardowym celem docelowym i nie jest wykonywane automatycznie przy każdej instalacji.cleaninstall

cleanusuwa folder docelowy - usuwa wszystkie pliki klas, dokumenty Java, słoiki, raporty i tak dalej. Jeśli tego nie zrobisz clean, maven „zrobi tylko to, co trzeba”, tak jak nie skompiluje klas, gdy odpowiednie pliki źródłowe nie ulegną zmianie (w skrócie).

nazywamy to celem w mrówce i celem w maven

Andreas Dolk
źródło
1
Myślę, że w tym kontekście czyszczenie i instalacja to fazy cyklu życia, a nie cele.
JL_SO
4

To samo dotyczy @Andreas_D, dodatkowo, jeśli powiesz, że zaktualizuj Spring z 1 wersji do innej w swoim projekcie bez robienia porządków, skończysz z obydwoma w swoim artefakcie. Wpadłem na to dużo podczas tworzenia Flex z Maven.

mezmo
źródło