Pesquisa · Mapa mental

Apache Maven

Apache Maven, ou Maven, é uma ferramenta de automação de compilação utilizada primariamente em projetos Java. Ela é similar à ferramenta Ant, mas é baseada em conceitos e trabalhos diferentes em um modo diferente. Também é utilizada para construir e gerenciar projetos escritos em C#, Ruby, Scala e outras linguagens. O projeto Maven é hospedado pela Apache Software Foundation, que fazia parte do antigo Projeto Jakarta.

Fonte: Wikipédia (pt)Atualizado em 09/07/2026
01

Exemplo

Imagem: learn_tek · CC0 · Openverse

Projetos Maven são configurados usando um Project Object Model, que é armazenado em um arquivo pom.xml. A seguir está um exemplo mínimo: Este POM apenas define um identificador único para o projeto (coordenadas) e sua dependência do framework JUnit. No entanto, isto já é suficiente para a construção do projeto e execução dos testes de unidade associados ao projeto. O Maven realiza isto adotando a ideia de Convenção sobre configuração, isto é, ele fornece valores padrões para a configuração do projeto. A estrutura de diretórios de um projeto Maven idiomático normal possui as seguintes entradas de diretório: compilará todos os arquivos Java, executará quaisquer testes e empacotará o código e os recursos entregáveis no destino /my-app-1.0.jar (assumindo que o artifactld seja my-app e a versão seja 1.0). Com a utilização do Maven, o usuário fornece apenas a configuração para o projeto, enquanto os plugins configuráveis fazem o trabalho real de compilação do projeto, limpando diretórios de destino, executando testes de unidade, gerando documentação de API e etc. Geralmente, os usuários não precisam escrever plugins. Ele contrasta com o Ant e o make, no qual um escreve procedimentos imperativos para fazer as tarefas supracitadas.

02

Conceitos

Imagem: xmodulo · BY · Openverse

Project Object Model

Um Project Object Model (POM), ou em português Modelo de Projeto de Objeto, fornece todas as configurações para um único projeto. A configuração geral cobre o nome do projeto, seu proprietário e suas dependências de outros projetos. Também pode configurar fases individuais do processo de construção, que são implementados como plugins. Por exemplo, pode configurar o plugin compilador para usar a versão 1.5 do Java para compilação, ou especificar o empacotamento do projeto mesmo que algumas unidades de teste falhem. Projetos maiores poderiam ser divididos em vários módulos, ou sub-projetos, cada um com seu próprio POM. Cada um pode então escrever um POM raiz através do qual ele pode compilar todos os módulos com um único comando. POMs também podem herdar configuração de outros POMs. Todos os POMs herdam do Super POM por padrão. O Super POM fornece configuração padrão, tal como os diretórios fonte padrões, plugins padrões e assim por diante.

Plugins

A maioria das funcionalidades do Maven está em plugins. Um plugin fornece um conjunto de objetivos que podem ser executados usando a seguinte sintaxe: Por exemplo, um projeto Java pode ser compilado com o objetivo de compilador do plugin de compilador, através da execução de mvn compiler:compile. Há plugins Maven para construção, teste, gerenciamento de controle de fonte, execução de um servidor web, geração de arquivos de projeto Eclipse e muito mais. Plugins são introduzidos e configurados em uma seção <plugins> de um arquivo pom.xml. Alguns plugins básicos estão incluídos em todos os projetos por padrão e eles possuem configurações padrões sensíveis.

Ciclos de vida de construção

Ciclo de vida de construção é uma lista de fases nomeadas que podem ser usadas para dar ordem ao objetivo de execução. Um dos ciclos de vida padrão do Maven é o default lifecycle, que inclui as seguintes fases, nesta ordem: Os objetivos fornecidos por plugins podem ser associados com diferentes fases do ciclo de vida. Por exemplo, por padrão, o objetivo "compiler:compile" está associado com a fase compile, enquanto o objetivo "surefire:test" está associado com a fase test. Considere o seguinte comando: Quando o comando anterior é executado, o Maven executa todos os objetivos associados com cada uma das fases acima da fase test. Em tal caso, o Maven executa o objetivo "resources:resources" associado com a fase process-resources, então "compiler:compile" e assim por diante até finalmente executar o objetivo "surefire:test".

Dependências

A seção de exemplo sugeriu ao mecanismo de manipulação de dependências do Maven. Digamos que um projeto que necessita da biblioteca Hibernate tem que declarar as coordenadas do projeto do Hibernate em seu POM. O Maven automaticamente baixará a dependência e as dependências que o próprio Hibernate precisa (chamadas dependências transitivas) e as armazenará em um repositório local do usuário. O Repositório Central do Maven 2 é usado por padrão para procurar bibliotecas, mas pode-se configurar os repositórios usados (e.g., repositórios privados de uma empresa) no POM. Há motores de busca, como a Central Maven, que podem ser usadas para encontrar coordenadas para diferentes bibliotecas e frameworks de código aberto.

Vídeos recomendados

Fontes consultadas

Continue pesquisando