Qual a diferença entre “mvn clean package” e “mvn clean install”?
277
Quais são exatamente as diferenças entre mvn clean packagee mvn clean install? Quando eu executo esses dois comandos, eles parecem fazer a mesma coisa.
Um pacote (constrói-o no destino) e nas instalações (pacotes e coloca-o no seu repositório). Você precisa fazer o posterior se quiser usar esta versão em outro módulo.
Peter Lawrey
3
Talvez isso deva ser reaberto? É perfeitamente possível responder e não achei difícil responder. Além disso, se alguém é novato em folha, é fácil ver como as duas fases parecem fazer a mesma coisa. Vou editá-lo na tentativa de torná-lo menos vago.
Daniel Kaplan
Respostas:
371
Bem, ambos vão limpar. Isso significa que eles removerão a pasta de destino. A verdadeira questão é qual é a diferença entre pacote e instalação?
packageirá compilar seu código e também empacotá-lo. Por exemplo, se o seu pom disser que o projeto é um jar, ele o criará quando você o empacotar e o colocar em algum lugar no diretório de destino (por padrão).
installirá compilar e empacotar, mas também colocará o pacote no seu repositório local. Isso fará com que outros projetos possam se referir a ele e capturá-lo no seu repositório local.
Por que o mvn install é mais rápido que o pacote mvn?
lostintranslation
9
@SharadHolani porque as compilações são incrementais. mvn clean installnão é mais rápido que mvn package.
OrangeDog
Para o meu projeto, o mvn package assembly: single, que constrói o jar de gordura, leva mais tempo que uma instalação do mvn. Empacote e instale os dois frascos de gordura equivalentes?
lostintranslation
1
@RakeshYadav sim, sim
Daniel Kaplan
116
O que limpa (comum nos dois comandos) - remove todos os arquivos gerados pela compilação anterior
Chegando à diferença entre o pacote de comandos e a instalação , primeiro você precisa entender o ciclo de vida de um projeto maven
Essas são as fases padrão do ciclo de vida no maven
validar - validar se o projeto está correto e todas as informações necessárias estão disponíveis
compilar - compila o código fonte do projeto
teste - teste o código fonte compilado usando uma estrutura de teste de unidade adequada. Esses testes não devem exigir que o código seja empacotado ou implantado
pacote - pegue o código compilado e empacote-o em seu formato distribuível, como um JAR.
verificar - execute qualquer verificação dos resultados dos testes de integração para garantir que os critérios de qualidade sejam atendidos
install - instala o pacote no repositório local, para uso como dependência em outros projetos localmente
deploy - feito no ambiente de construção, copia o pacote final para o repositório remoto para compartilhar com outros desenvolvedores e projetos.
Como o Maven funciona é, se você executar um comando para qualquer uma das fases do ciclo de vida, ele executará cada fase padrão do ciclo de vida em ordem, antes de executar o próprio comando.
Portanto, efetivamente, o que isso significa é que os comandos install fazem tudo o que o comando package faz e um pouco mais (instale o pacote no repositório local, para uso como dependência em outros projetos localmente)
Isso deve ser marcado como resposta aceita. Isso define claramente e ajuda o OP a entender quais são as diferentes fases do ciclo de vida do maven e por que o mvn install inclui o pacote mvn, mas não o contrário.
Jasmeet Singh 30/09/19
1
Maven em poucas palavras, ótimo!
CodeSlave
19
O pacote irá gerar Jar / war conforme o arquivo POM.
install instalará o arquivo jar gerado no repositório local para outras dependências, se houver.
primeira embalagem acontecerá, então esses pacotes (jar / war) serão instalados.
Abdul Gafoor
1
"Fase de instalação segue a fase do pacote". A maneira como é redigida atualmente é ao contrário. "Seguido por" significa "depois".
Charles Wood
11
Empacotar e instalar são várias fases no ciclo de vida da compilação maven. A fase do pacote executará todas as fases anteriores a isso e parará de empacotar o projeto como um frasco. Da mesma forma, a fase de instalação executará todas as fases anteriores e finalmente instalará o projeto localmente para outros projetos dependentes.
O que você quer dizer com "e finalmente instalar o projeto localmente para outros projetos dependentes"
Arun Gowda
2
@ArunGowda significa que no .m2 criado em seu sistema após a instalação do maven será adicionado aos projetos que você está empacotando e estará disponível para outros projetos como dependência.
JAVA
uma imagem é de 1000 palavras, alguém tem um diagrama?
A instalação do @MrCholo mvn colocará o jar / war no seu repo de maven. O lugar onde todas as suas dependências Maven ficam armazenados, normalmente ~ / .m2
brt
6
packageadicionará o pacote jarou wara sua targetpasta. Podemos verificar quando, esvaziamos a pasta de destino (usando mvn clean) e depois executamos mvn package.
installfará tudo o que packagefizer, além de adicionar o pacote jarou waro repositório local. Para confirmar, verifique sua .m2pasta.
package
einstall
.Respostas:
Bem, ambos vão limpar. Isso significa que eles removerão a pasta de destino. A verdadeira questão é qual é a diferença entre pacote e instalação?
package
irá compilar seu código e também empacotá-lo. Por exemplo, se o seu pom disser que o projeto é um jar, ele o criará quando você o empacotar e o colocar em algum lugar no diretório de destino (por padrão).install
irá compilar e empacotar, mas também colocará o pacote no seu repositório local. Isso fará com que outros projetos possam se referir a ele e capturá-lo no seu repositório local.Documentação
fonte
mvn clean install
não é mais rápido quemvn package
.O que limpa (comum nos dois comandos) - remove todos os arquivos gerados pela compilação anterior
Chegando à diferença entre o pacote de comandos e a instalação , primeiro você precisa entender o ciclo de vida de um projeto maven
Essas são as fases padrão do ciclo de vida no maven
Como o Maven funciona é, se você executar um comando para qualquer uma das fases do ciclo de vida, ele executará cada fase padrão do ciclo de vida em ordem, antes de executar o próprio comando.
ordem de execução
Portanto, quando você executa o comando mvn package , ele executa os comandos para todas as fases do ciclo de vida até o pacote
E quanto ao mvn install , ele executa os comandos para todas as fases do ciclo de vida até a instalação, o que inclui também o pacote
Portanto, efetivamente, o que isso significa é que os comandos install fazem tudo o que o comando package faz e um pouco mais (instale o pacote no repositório local, para uso como dependência em outros projetos localmente)
Fonte: Referência do ciclo de vida do Maven
fonte
O pacote irá gerar Jar / war conforme o arquivo POM. install instalará o arquivo jar gerado no repositório local para outras dependências, se houver.
a fase de instalação vem após a fase do pacote
fonte
Empacotar e instalar são várias fases no ciclo de vida da compilação maven. A fase do pacote executará todas as fases anteriores a isso e parará de empacotar o projeto como um frasco. Da mesma forma, a fase de instalação executará todas as fases anteriores e finalmente instalará o projeto localmente para outros projetos dependentes.
Para entender o ciclo de vida da construção do maven, acesse o seguinte link https://ayolajayamaha.blogspot.in/2014/05/difference-between-mvn-clean-install.html
fonte
package
adicionará o pacotejar
ouwar
a suatarget
pasta. Podemos verificar quando, esvaziamos a pasta de destino (usandomvn clean
) e depois executamosmvn package
.install
fará tudo o quepackage
fizer, além de adicionar o pacotejar
ouwar
o repositório local. Para confirmar, verifique sua.m2
pasta.fonte