Qual é a diferença entre “mvn clean install” e “mvn install”?

208

Qual é a diferença entre mvn clean installe mvn install?

Leonid
fonte

Respostas:

214

cleané sua própria fase do ciclo de vida de construção (que pode ser considerada uma ação ou tarefa) no Maven. mvn clean installdiz ao Maven para fazer a cleanfase em cada módulo antes de executar a installfase para cada módulo.

O que isso faz é limpar todos os arquivos compilados que você possui, certificando-se de que você está realmente compilando cada módulo do zero.

Powerlord
fonte
13
Eu sempre pensei instalar incluindo limpo como uma de suas fases ... até que eu veja isso #
Liu
14
@shanyangqu Infelizmente, não. cleanestá em um ciclo de vida separado , portanto não é chamado por padrão.
Powerlord
47

O Maven permite especificar metas ou fases do ciclo de vida na linha de comando (ou ambas).

cleane installsão duas fases diferentes do ciclo de vida , às quais diferentes execuções de plug-ins estão vinculadas (por padrão ou explicitamente em seu pom.xml )

A cleanfase, por convenção, destina-se a tornar uma compilação reproduzível, ou seja, limpa tudo o que foi criado pelas compilações anteriores. Na maioria dos casos, isso é feito chamando clean:clean, o que exclui o diretório vinculado ${project.build.directory}(geralmente chamado de "destino")

Sean Patrick Floyd
fonte
6
"instalar" não é um ciclo de vida. É uma fase no ciclo de vida padrão. Embora exista um ciclo de vida "limpo", esse parâmetro especifica a fase "limpa" no ciclo de vida "limpo", não o ciclo de vida "limpo".
Puce 16/05
1
@Puce verdade, eu quis dizer "Phase", não ciclo de vida
Sean Patrick Floyd
38

Você pode chamar mais de um objetivo alvo com o maven. mvn clean installchama cleanprimeiro, então install. É necessário limpar manualmente, porque a limpeza não é uma meta de destino padrão e não é executada automaticamente em todas as instalações.

cleanremove a pasta de destino - exclui todos os arquivos de classe, os documentos java, os jars, os relatórios e assim por diante. Caso contrário clean, o maven apenas "fará o que precisa ser feito", como se não fosse compilar classes quando os arquivos de origem correspondentes não foram alterados (em breve).

chamamos de alvo na formiga e objetivo no maven

Andreas Dolk
fonte
1
Penso que, neste contexto, limpar e instalar são fases do ciclo de vida, não metas.
JL_SO 1/08/19
4

Idem para @Andreas_D, além disso, se você disser que atualizar o Spring de uma versão para outra no seu projeto sem fazer uma limpeza, você terminará com as duas no seu artefato. Deparou-se muito com isso ao desenvolver o Flex com o Maven.

mezmo
fonte