In che modo "mvn clean install" è diverso da "mvn install"?


Risposte:


214

cleanè la propria fase del ciclo di vita della build (che può essere considerata un'azione o un'attività) in Maven. mvn clean installdice a Maven di eseguire la cleanfase in ciascun modulo prima di eseguire la installfase per ciascun modulo.

Quello che fa è cancellare tutti i file compilati che hai, assicurandoti di compilare davvero ogni modulo da zero.


13
Ho sempre pensato di installare anche clean come una delle sue fasi ... fino a quando non vedo questo
Junchen Liu

14
@shanyangqu Purtroppo, no. cleanè in un ciclo di vita separato , quindi non viene chiamato per impostazione predefinita.
Powerlord

47

Maven ti consente di specificare obiettivi o fasi del ciclo di vita sulla riga di comando (o entrambi).

cleane installsono due diverse fasi del ciclo di vita , alle quali sono legate diverse esecuzioni di plugin (per impostazione predefinita o esplicitamente nel tuo pom.xml )

La cleanfase, per convenzione, ha lo scopo di rendere riproducibile una build, ovvero ripulisce tutto ciò che è stato creato dalle build precedenti. Nella maggior parte dei casi lo fa chiamando clean:clean, che elimina la directory associata ${project.build.directory}(di solito chiamata "target")


6
"installa" non è un ciclo di vita. È una fase del ciclo di vita predefinito. Sebbene esista un ciclo di vita "pulito", questo parametro AFAIK specifica la fase "pulita" nel ciclo di vita "pulito", non il ciclo di vita "pulito" stesso.
Puce,

1
@Puce vero, intendevo "Fase", non ciclo di vita
Sean Patrick Floyd,

38

Puoi chiamare più di un obiettivo target con Maven. mvn clean installchiama cleanprima, quindi install. Devi pulire manualmente, perché clean non è un obiettivo target standard e non viene eseguito automaticamente ad ogni installazione.

cleanrimuove la cartella di destinazione: elimina tutti i file di classe, i documenti java, i barattoli, i report e così via. Se non lo fai clean, allora Maven "farà solo ciò che deve essere fatto", come se non compilasse le classi quando i corrispondenti file sorgente non sono cambiati (in breve).

lo chiamiamo bersaglio nella formica e obiettivo nella maven


1
Penso che in questo contesto la pulizia e l'installazione siano fasi del ciclo di vita, non obiettivi.
JL_SO


4

Idem per @Andreas_D, inoltre se dici di aggiornare Spring da 1 versione a un'altra nel tuo progetto senza fare una pulizia, finirai con entrambi nel tuo artefatto. Mi sono imbattuto molto in questo sviluppo Flex con Maven.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.