O que o mvn install no maven faz exatamente

165

Acabei de começar a usar o Maven e me disseram para fazer mvn installem um diretório específico.

O que mvn installfaz exatamente?

Eu acho que ele procura pom.xmlna pasta atual e começa a seguir as instruções especificadas nesse arquivo. Isso está correto?

Rajeshwar
fonte

Respostas:

124

Como você deve saber, o Maven é uma ferramenta de automação de compilação fornecida pelo Apache que faz mais do que gerenciamento de dependências. Podemos fazê-lo como um par de Ant e Makefile, que baixa todas as dependências necessárias.

Em um mvn install, ele enquadra uma árvore de dependência com base na configuração do projeto pom.xmlem todos os subprojetos sob o super pom.xml(o POM raiz) e baixa / compila todos os componentes necessários em um diretório chamado .m2na pasta do usuário. Essas dependências precisarão ser resolvidas para que o projeto seja construído sem erros e mvn installé um utilitário que pode fazer o download da maioria das dependências.

Além disso, existem outros utilitários no Maven, dependency:resolveque podem ser usados ​​separadamente em casos específicos. O ciclo de vida da construção do MVN é o seguinte: Ligações do Ciclo de Vida

  1. process-resources
  2. compile
  3. process-test-resources
  4. test-compile
  5. test
  6. package
  7. install
  8. deploy

A fase de teste deste mvn pode ser ignorada usando um sinalizador -DskipTests=true.

uniqrish
fonte
9
Apenas uma nota lateral, se você quiser pular todos os objetivos do teste relacionados, use: -Dmaven.test.skip = true (em vez de -DskipTests = true)
Manoj Shrestha
Esta resposta falha ao esclarecer que o comando install finalmente instala o artefato localmente, ou seja, no repositório local.
PeriChandra
34

Você já consultou algum dos documentos do Maven, por exemplo, os documentos do maven install plugin ?

Versão resumida: ele criará o projeto e o instalará no seu repositório local.

Dave Newton
fonte
Digamos que você execute "mvn install" em uma biblioteca de código aberto. Em seguida, você executa o "mvn install" em um projeto que usa a biblioteca de código aberto que compilamos primeiro. Ao executar "mvn install", os JARs serão consultados primeiro no repositório local? Ou é dependente do arquivo POM?
Kevin Meredith
1
@ Kevin Deve ser local primeiro, já que esse é o ponto. Se não estiver no repositório local, ele procurará nos repositórios que você configurou (ou nos padrões) e o instalará no repositório local, se for encontrado. Eu suspeito que você possa configurá-lo para sempre pular o repositório local, embora eu não saiba como sem procurá-lo.
Dave Newton
17
que você olhou para os documentos canónicos para Maven? O site do Apache explica o objetivo da instalação do mvn da seguinte maneira: "Na maioria dos casos, o objetivo install: install não precisa de nenhuma configuração, ele precisa que o POM do projeto e o arquivo de artefato sejam instalados durante a fase de instalação do ciclo de vida padrão". É porque o documento do Apache falha ao explicar o que o 'mvn install' realmente faz que pessoas como o pôster, e eu, estejam procurando a resposta. Pergunta perfeitamente razoável.
22413 Bethesdaboys
6

O install:installobjetivo é fornecido pelo «Apache Maven Install Plugin»:

Plug-in de Instalação do Apache Maven

O Plug-in de Instalação é usado durante a fase de instalação para adicionar artefatos ao repositório local. Instalar Plugin utiliza as informações no POM ( groupId, artifactId, version) para determinar o local adequado para o artefato dentro do repositório local.

O repositório local é o cache local em que todos os artefatos necessários para a construção são armazenados. Por padrão, ele está localizado no diretório inicial do usuário ( ~/.m2/repository), mas o local pode ser configurado ~/.m2/settings.xmlusando o <localRepository>elemento

- Apache Maven Install Plugin - Introdução .

Dito isto, o objetivo exato do objetivo:

install:install é usado para instalar automaticamente o artefato principal do projeto (JAR, WAR ou EAR), seu POM e quaisquer artefatos anexados (fontes, javadoc, etc.) produzidos por um projeto específico.

- Apache Maven Install Plugin - Introdução .

Para obter detalhes adicionais sobre o objetivo, consulte a página Plug-in de instalação do Apache Maven - instalar: instalar .

Para obter detalhes adicionais sobre o ciclo de vida da construção em geral e em qual lugar o objetivo tem no ciclo de vida da construção, consulte a página Maven - Introdução à construção do ciclo de vida .

Sergey Brunov
fonte
3

Resposta curta

instalação mvn

  • adiciona todos os artefatos (dependências) especificados em pom ao repositório local (de fontes remotas).
Daniel Perník
fonte
2

-DskipTests=true é uma forma curta de -Dmaven.test.skip=true

Faça alterações no arquivo Setting.xml na sua pasta .m2 . Você pode usar o link para o repositório local para que os frascos desclassificados não sejam baixados novamente.

<url>file://C:/Users/admin/.m2/repository</url>
 </repository>
Jyoti Prakash
fonte
0

Os trabalhos principais do mvn install são: 1) Faça o download das dependências e 2) Construa o projeto

enquanto o trabalho 1 é atualmente tratado por IDs como intellij (eles são baixados para qualquer dependência no POM)

A instalação do mvn agora é usada principalmente para o trabalho 2 .

Aditya Rewari
fonte