Maven - Visão geral

O que é Maven?

Maven é uma ferramenta de gerenciamento e compreensão de projetos que fornece aos desenvolvedores uma estrutura completa de ciclo de vida de construção. A equipe de desenvolvimento pode automatizar a infraestrutura de construção do projeto em quase nenhum momento, pois o Maven usa um layout de diretório padrão e um ciclo de vida de construção padrão.

No caso de ambiente com várias equipes de desenvolvimento, o Maven pode configurar a maneira de trabalhar de acordo com os padrões em um tempo muito curto. Como a maioria das configurações do projeto são simples e reutilizáveis, o Maven torna a vida do desenvolvedor mais fácil ao criar relatórios, verificações, construir e testar configurações de automação.

O Maven fornece aos desenvolvedores maneiras de gerenciar o seguinte -

  • Builds
  • Documentation
  • Reporting
  • Dependencies
  • SCMs
  • Releases
  • Distribution
  • Lista de correio

Para resumir, o Maven simplifica e padroniza o processo de construção do projeto. Ele lida com compilação, distribuição, documentação, colaboração em equipe e outras tarefas perfeitamente. O Maven aumenta a capacidade de reutilização e cuida da maioria das tarefas relacionadas à construção.

Evolução Maven

Maven foi originalmente projetado para simplificar os processos de construção no projeto Jakarta Turbine. Havia vários projetos e cada projeto continha arquivos de construção ANT ligeiramente diferentes. JARs foram verificados no CVS.

O grupo Apache então desenvolveu Maven que pode construir vários projetos juntos, publicar informações de projetos, implantar projetos, compartilhar JARs em vários projetos e ajudar na colaboração de equipes.

Objetivo

O principal objetivo do Maven é fornecer ao desenvolvedor o seguinte -

  • Um modelo abrangente para projetos, que pode ser reutilizado, mantido e mais fácil de compreender.

  • Plugins ou ferramentas que interagem com este modelo declarativo.

A estrutura e o conteúdo do projeto Maven são declarados em um arquivo xml, pom.xml, referido como Project Object Model (POM), que é a unidade fundamental de todo o sistema Maven. Em capítulos posteriores, explicaremos o POM em detalhes.

Convenção sobre configuração

Maven usa Convention sobre Configuration, o que significa que os desenvolvedores não precisam criar eles próprios o processo de construção.

Os desenvolvedores não precisam mencionar todos os detalhes de configuração. O Maven fornece um comportamento padrão sensato para projetos. Quando um projeto Maven é criado, o Maven cria uma estrutura de projeto padrão. O desenvolvedor só precisa colocar os arquivos de acordo e não precisa definir nenhuma configuração em pom.xml.

Como exemplo, a tabela a seguir mostra os valores padrão para arquivos de código-fonte do projeto, arquivos de recursos e outras configurações. Assumindo,${basedir} denota a localização do projeto -

Item Padrão
Código fonte $ {basedir} / src / main / java
Recursos $ {basedir} / src / main / resources
Testes $ {basedir} / src / test
Código de byte cumprido $ {basedir} / alvo
JAR distribuível $ {basedir} / target / classes

Para construir o projeto, o Maven oferece aos desenvolvedores opções para mencionar os objetivos do ciclo de vida e as dependências do projeto (que dependem dos recursos do plugin Maven e de suas convenções padrão). Grande parte do gerenciamento de projetos e tarefas relacionadas à construção são mantidas pelos plug-ins Maven.

Os desenvolvedores podem construir qualquer projeto Maven sem a necessidade de entender como os plug-ins individuais funcionam. Discutiremos os plug-ins Maven em detalhes nos capítulos posteriores.

Características do Maven

  • Configuração de projeto simples que segue as melhores práticas.

  • Uso consistente em todos os projetos.

  • Gerenciamento de dependências incluindo atualização automática.

  • Um grande e crescente repositório de bibliotecas.

  • Extensível, com a capacidade de escrever plug-ins facilmente em Java ou linguagens de script.

  • Acesso instantâneo a novos recursos com pouca ou nenhuma configuração extra.

  • Model-based builds - O Maven é capaz de construir qualquer número de projetos em tipos de saída predefinidos, como jar, war, metadata.

  • Coherent site of project information - Usando os mesmos metadados do processo de construção, o maven é capaz de gerar um site e um PDF incluindo a documentação completa.

  • Release management and distribution publication - Sem configuração adicional, o maven se integra ao seu sistema de controle de origem, como o CVS, e gerencia o lançamento de um projeto.

  • Backward Compatibility- Você pode transportar facilmente os vários módulos de um projeto para o Maven 3 a partir de versões anteriores do Maven. Também pode suportar as versões mais antigas.

  • Automatic parent versioning - Não há necessidade de especificar o pai no submódulo para manutenção.

  • Parallel builds- Analisa o gráfico de dependência do projeto e permite construir módulos de cronograma em paralelo. Usando isso, você pode obter melhorias de desempenho de 20-50%.

  • Better Error and Integrity Reporting - O Maven melhorou o relatório de erros e fornece um link para a página wiki do Maven, onde você obterá uma descrição completa do erro.