Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Diferença entre mvn package x mvn install

Olá pessoal,

Pelo que entendi quando temos projetos que são dependentes entre sí, isto é, o projeto B dependendo projeto A sempre tenho que usar o mvn install, pois preciso que o mesmo seja disponibilizado localmente para atender as dependências, correto?

Devo realizar o mesmo procedimento se tenho um Nexus por exemplo, onde mantenho meus artefatos centralizados?

3 respostas

Fala aí Cesar blz?

O mvn install simplesmente instala seu projeto no repositório local (~/.m2/repository por padrão).

Não sei se compreendi sua duvida, mas creio que sua duvida seja: "Se você deve usar mvn install para instalar seu projeto em um repositório remoto como por exemplo o Nexus".

Se está é usa dúvida a resposta é não, segundo a documentação do maven você deve usar o plugin deploy para instalar sua dependência em um repositório remoto.

Veja os links: http://maven.apache.org/plugins/maven-install-plugin/usage.html

http://maven.apache.org/plugins/maven-deploy-plugin/

Espero ter ajudado.

Fernando,

Entendi a sua resposta, e voce me explicou outra dúvida que eu tinha. Mas nesse caso a pergunta é:

Eu tenho um projeto B que em seu pom.xml possui uma dependencia para um projeto A sendo que a versão 0.0.1-SNAPSHOT por exemplo.

Neste caso sempre que compilar o projeto A tenho que usar o mvn install, porque se eu usar o mvn package não vou ter instalado no meu .m2 o snapshot do projeto A, correto?

solução!

Entendi agora sua duvida Cesar,

Então se você estiver usando o Eclipse por exemplo, se você tiver os dois projetos abertos no IDEo mesmo irá tentar resolver a dependência com as referencias dos projetos aberto.

Isso acaba gerando um falso positivo, pois você consegue rodar seu projeto dentro do IDE mas ao tentar rodar fora não vai funcionar. Dá até para desativar essa opção clicando com o botão direito sobre o projeto > Maven > Disable Workspace Resolution. Ao desabilitar essa opção sempre será pesquisado no seu repositório local e caso não esteja nele será pesquisado no(s) repositório(s) remoto(s).

A melhor coisa é sempre instalar o projeto utilizando o mvn install pois garante que sua dependência vai estar disponível no repositório local e com isso indiferente de você estar rodando por dentro de um IDE ou não vai funcionar.

O mvn package simplesmente gera um pacote da sua aplicação dentro do diretório target (.jar, .war, .ear e etc...).

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software