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.