Eu sou novo no Maven, tenho um projeto web baseado em Java com o maven configurado no meu MyEclipse.
Agora, se eu modifiquei algum arquivo java, preciso fazer Run as -> Mvn install
ou Mvn package
?
Eu sou novo no Maven, tenho um projeto web baseado em Java com o maven configurado no meu MyEclipse.
Agora, se eu modifiquei algum arquivo java, preciso fazer Run as -> Mvn install
ou Mvn package
?
Respostas:
de http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
package
: pegue o código compilado e empacote-o em seu formato distribuível, como um JAR.
install
: instale o pacote no repositório local, para uso como dependência em outros projetos localmente
Portanto, a resposta para sua pergunta é: depende se você deseja instalá-lo no seu repositório local. A instalação também executará o pacote, pois está mais alto na pilha da fase do objetivo.
deploy
faz. Se você substituí-lo package
, ele não será implantado no Nexus.
mvn install
é a opção mais usada.
mvn package
raramente é usado, apenas se você estiver depurando algum problema com o processo de criação do maven.
Veja: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
Observe que mvn package
apenas criará um arquivo jar.
mvn install
fará isso e instalará os arquivos jar (e classe etc.) nos locais apropriados se outro código depender desses jars.
Eu costumo fazer um mvn clean install
; isso exclui o target
diretório e recria todos os frascos nesse local.
A limpeza ajuda com coisas desnecessárias ou removidas que às vezes podem atrapalhar.
Em vez disso, depure (algumas vezes) apenas comece do zero o tempo todo.
A partir da referência do Ciclo de vida , a instalação executará os testes de integração do projeto, o pacote não.
Se você realmente não precisar instalar os artefatos gerados, use pelo menos verificar .
Além disso, você deve observar que, se o seu projeto é composto por vários módulos que dependem um do outro, você deve usar "install" em vez de "package"; caso contrário, sua compilação falhará; quando você usar o comando install, o módulo A será empacotado e implantado no repositório local e, se o módulo B precisar do módulo A como uma dependência, ele poderá acessá-lo no repositório local.
Se você não estiver usando um repositório remoto (como um artefato), use simples e antigo:
mvn clean install
Tópico bastante antigo, mas o AFAIK, se você executar seu próprio repositório (por exemplo: com artefato) para compartilhar jar entre seus times, convém usar
mvn clean deploy
em vez de.
Dessa forma, seu servidor de integração contínua pode ter certeza de que todas as dependências foram enviadas corretamente ao seu repositório remoto. Se você perdeu um, o mvn não poderá encontrá-lo no seu repositório m2 local do CI.
pacote - pega o código compilado e empacota-o em seu formato distribuível, como um arquivo JAR ou WAR. install - instala o pacote no repositório local, para uso como dependência em outros projetos localmente
A maneira correta é que, mvn package
se você fez as coisas corretamente para a parte principal do seu build, não será necessário instalar seus pacotes no repositório local.
Além disso, se você usar o Travis, poderá "armazenar em cache" suas dependências, porque ele não tocará no seu $HOME.m2/repository
se você usar o pacote para seu próprio projeto.
Na praticidade, se você tentar fazer um, mvn site
geralmente precisará fazer um mvn install
antes. Existem muitos erros com um site
ou vários plugins mal mantidos.
Depende do que você está tentando alcançar após alterar o arquivo Java. Até que você queira testar o processo do maven, nunca precisará fazer nada. O Eclipse / MyEclipse criará o necessário e colocará a saída no local apropriado dentro do seu projeto. Você também pode executá-lo ou implantá-lo (se for um projeto da web, por exemplo), sem precisar fazer nada explicitamente com o maven. No final, para instalar seu projeto no repositório maven, você precisará fazer uma instalação maven. Você também pode ter outros objetivos que deseja executar, o que o MyEclipse não fará automaticamente.
Como eu disse, isso depende do que você quer fazer.