O documento descreve o Apache Maven, um gerenciador de projetos Java. Ele explica que o Maven gerencia todo o ciclo de vida de um projeto, desde sua criação até implantação, e mantém informações do projeto em um arquivo POM. O Maven também facilita a automação de tarefas como compilação e teste através de plugins.
2. O que é Maven?
“Apache Maven é um software de gestão de projeto,
baseado no conceito de um projeto modelo de objeto
(POM). Pode gerir a construção, elaboração de relatórios
do projeto e documentação”.
[Apache Maven Project, 2013]
3. Sobre Maven
• O Maven gerencia todo o ciclo de vida de um projeto, desde a
sua criação até sua implantação, ele cria uma estrutura padrão
para o projeto, isso permite que um Projeto Maven seja
independente de IDE.
• Mantém todas as informações do projeto em um único lugar,
um arquivo XML chamado de POM (Project Object Model), que
é o arquivo de configuração do projeto onde são definidas
todas as suas características.
• O Maven pode ser usado em linguagens como Java, C#, Ruby,
Scala e outras.
• Mantido pela Apache Software Foundation, disponível para
download em [https://maven.apache.org/download.cgi].
4. Principais Características
• Independente de IDE
• Gerencia de dependências
• Uso de Plugins
• Automatização
• Facilidade de configuração
• Consistência
• Construções Multi-Módulo
5. POM - Project Object Model
No POM são definidas informações básicas do projeto,
como:
• Nome e versão;
• Desenvolvedores;
• Repositórios de código fonte;
• Dependências em bibliotecas externas;
• Plugins do próprio Maven que são utilizados para facilitar
a vida dos desenvolvedores;
6. POM - Project Object Model
Um projeto é identificado no POM.xml através de:
• groupID: Identificador de projeto de grupos arbitrários.
• artfiactID: Nome de projeto arbitrário.
• version: Versão do Projeto.
• packaging: Tipo de pacote que será gerado, pode ser jar
(padrão), war ou pom.
8. Ciclo de Vida
Uma construção Maven seguem um ciclo de vida:
• Validate – verifica se a sua configuração está correta;
• Compile– compila o código fonte do projeto ;
• Test– executa os testes unitários do projeto;
• Package– empacota o projeto conforme foi definido na sua
descrição;
• Integration-test– executa os testes de integração;
• Verify– verifica a qualidade da aplicação e do código
(normalmente com relatórios de análise de código, resultados
de testes de integração e carga);
• Install– instala o artefato gerado no repositório local do
Maven;
• Deploy– envia o artefato gerado para um servidor remoto para
que ela seja implantada;
9. Principais Comandos
• mvn compile: compila o código fonte do projeto.
• mvn test: executa os testes unitários do projeto.
• mvn package: empacota o projeto conforme foi definido
na sua descrição.
• mvn install: instala o artefato gerado no repositório local
do Maven.
• mvn deploy: envia o artefato gerado para um servidor
remoto para que ela seja implantada.
10. Gerenciamento de dependências
O gerenciamento de dependências é um dos melhores
recursos presentes no Maven, as dependências nada mais
são do que as bibliotecas externas necessárias no projeto,
muitas vezes nossas aplicações precisam de bibliotecas
que fornecem serviços especificos para a aplicação, como
API JDBC, Log4J, JDOM e etc.
Sem usar o Maven o desenvolvedor deve adicionar e
manter atualizada essas bibliotecas manualmente, além de
ser obrigado replicar isso em todas as maquinas que a
aplicação for executada.
11. Gerenciamento de dependências
Com o Maven maior parte desse processo torna-se
automático. As dependencias só precisam ser descritas no
POM.xml seguindo a seguinte estrutura:
12. Repositórios
Quando uma dependência é adicionada ao POM.xml ela é baixada de
forma automática e adicionada as bibliotecas do projeto, mas como
isso é feito? De onde essas bibliotecas são baixadas?
Para armazenar essas bibliotecas o Maven utiliza repositórios. Um
repositório para o Maven é uma estrutura de diretórios e arquivos na
qual ele armazena e busca por todas as dependências dos projetos
que ele gerencia.
Quando uma dependência é declarada em um projeto, o Maven
procura essa dependência no seu repositório local. Se não estiver no
repositório local, há uma busca nos repositórios remotos (na internet)
que vem configurados automaticamente na ferramenta.
Repositórios Locais normalmente são mantidos no diretório
User/.m2/repository
14. Repositórios
Mas e se a biblioteca que eu preciso não estiver no meu
repositório local ou em nenhum repositório online?
Essa é uma questão comum de ocorrer, as vezes o seu
projeto depende de uma biblioteca ou framework que não
está disponível, porque ela não é open-source, outras
vezes porque ninguém colocou ela em nenhum repositório.
15. Repositórios
Para adicionar ela em nosso projeto, temos que fazer com
que ela esteja disponível no repositório local. Isso é feito
através dos seguintes comandos: