Maven é uma ferramenta de gerenciamento e compreensão de projetos Java que fornece convenções sobre configuração, gerenciamento de dependências e repositórios centrais. Ele permite criar projetos Java usando templates, executar builds automatizados e gerenciar o ciclo de vida do projeto.
2. Maven
O que é?
● Convenção sobre configuração
Maven tenta evitar, tanto quanto possível configuração, escolhendo valores padrão do mundo real e
fornecimento de modelos de projeto (archtypes);
● Gerenciamento de dependência
É possível definir as dependências para outros projetos. Durante o build, a ferramenta resolve as
dependências e, se necessário, também faz o build dos projetos dependentes;
● Repositório central
Dependências do projeto pode ser carregado a partir do sistema de arquivos local, da Internet ou de
repositórios públicos. A empresa por trás do projeto Maven também fornece um repositório central
chamado Maven Central.
3. Maven
Template para Projetos
Você pode criar um projeto, executando o goal generate do plugin do archetype: $ mvn archetype:
generate. Isso inicia o processo de gerar no modo interativo e pede-lhe para várias configurações.
groupId: Define um nome único da organização ou grupo que criou o projeto. Este é normalmente
um nome de domínio. Para a geração do groupId define também o pacote da classe principal.
artifactId: Define o nome exclusivo do artefato. No nosso caso é a mesma coisa como o groupId,
mas também poderia ser um nome simples como "SuperCalculadora". A geração utiliza este valor
como nome da pasta raiz do projeto.
packaging: Define o processo de empacotamento. Isto poderia ser, por exemplo jar, war ou eap.
Este ajuste tem influência sobre todo o ciclo de vida do projeto.
version: Isso define a versão dos artefatos gerados a partir de nosso projeto.
4. Maven
Interface Comum
Um projeto em maven se torna uma interface comum para muitas tecnologias, como IDEs. Projetos
gerados no maven tem o seu archetype definido e por esse motivo pode ser migrado para outras
IDEs sem problemas com configurações próprias da IDE.
5. Maven
Configuração
● Project Object Model (POM)
A configuração de um projeto Maven é feito através de Project Object Model, que é representado pelo
arquivo pom.xml.
Por padrão, este é o único arquivo de configuração necessário para o processo de build. Todo o build
segue um ciclo de vida específico. Maven vem com um ciclo de vida padrão que inclui as fases de
build mais comuns, como a compilação, testes e empacotamento. Todas as fases são compostas de
goals plugin. Goals plugin são tarefas que são mais específicas do que as fases. Assim, uma fase
pode ser definida para executar mais de um goal plugin.
O resultado de uma compilação é chamada de artefato. Um artefato, por exemplo, pode ser um
executável ou um arquivo de documentos.
6. Maven
Instalação
Para uma instalação manual você pode baixar Maven a partir do site.
Extraia o download para uma pasta selecionada no seu computador e adicione o relative path
M2_HOME apontando para este diretório. Adicionar M2_HOME / bin a sua variável PATH.
Para ver os detalhes da instalação de outro sistema, siga o guia do site do projeto Maven.
7. Maven
Validar Instalação
Para validar que o Maven foi instalado corretamente, abra um console e use o seguinte comando:
mvn -version.
Você deverá receber feedback como a saída da versão do Maven que você instalou.
8. Maven
Utilizando Maven como um Build Tool
Maven é uma ferramenta de linha de comando que será iniciado no terminal de comandos.
Para executar uma compilação com Maven, você só tem que apontar a sua linha de comando para a
pasta que inclui o arquivo pom.xml e execute o comando mvn install.
Com esta única linha, o ciclo de vida do maven será iniciado. Assim, a configuração do pom.xml será
carregada e todas as suas dependências serão resolvidas. Depois disso, Maven tenta carregar a
versão mais recente das dependencias do repositório central em um repositório local, que é colocado
como .m2 / repository no diretório home do usuário. Como parte do ciclo de vida, a ferramenta de
build compila os fontes e testes, executa os testes e empacota os arquivos compilados, por exemplo,
como um JAR. Como última etapa, o artefato resultante será gravado no repositório local, para que
possa ser utilizado por outros projetos.
Maven cria o resultado de compilação na pasta de destino. Se você executar o comando mvn instalar,
Maven compila o código-fonte, constrói o resultado, por exemplo, um arquivo JAR.
9. Maven
Archetypes
● appfuse-basic-jsf – AppFuse archetype para a criação de uma aplicação web com Hibernate,
Spring e JSF.
● maven-archetype-j2ee-simple – Uma aplicação simples J2EE.
● jpa-maven-archetype – Aplicação JPA.
● struts2-archetype-starter – Struts 2 Archetype.
Lista de archetypes:
http://docs.codehaus.org/display/MAVENUSER/Archetypes+List
10. Maven
Plugins
O framework é estruturado e funciona em cima de um conjunto de plug-ins que, individualmente, são
os responsáveis por todas as tarefas executadas durante o processo de build. Assim, plug-ins
executam desde a ação mais simples de todas, que é a limpeza do projeto, até tarefas muito mais
elaboradas, como a criação de um EAR.
O Maven possui uma infinidade de plug-ins “prontos para uso” e muitos outros são fornecidos por
terceiros (soluções open-source ou proprietárias). Apesar disso, muitas vezes pode haver a
necessidade de se incluir uma tarefa especial no ciclo de construção do aplicativo, algo particular a
um determinado projeto ou empresa e cuja automação pode facilitar (e muito) a vida do
desenvolvedor. Nesse contexto é importante entender como os plug-ins funcionam e como podemos
construí-los, tirando assim ainda mais proveito do framework.
11. Maven
Exercicio - Criar e Gerar um projeto Java
Neste exercício, você irá cria um projeto Java com Maven e fazer o build desse projeto.
12. Maven
Geração do Projeto
Neste projeto nós utilizamos as funcionalidade scaffoding do Maven para criar um projeto Java. Para
evitar o modo interativo (em que Maven pede os parâmetros necessários), todas as propriedades
necessárias são passadas diretamente para o comando em sua criação. Selecione uma pasta onde
irá ser criado projeto e insira esse comando.
$ mvn archetype:generate -DgroupId=com.consulters.build.maven.java -
DartifactId=consulters-zeus -DarchetypeArtifactId=maven-archetype-quickstart -
DinteractiveMode=false
Agora dê uma olhada como ficou a estrutura do projeto em sua máquina.
Maven criou uma classe App.java na pasta ./src/main/, que é apenas um programa simples "Hello
World". Também criou diretamente uma classe de teste válida em ./src/test/, com um dumb test. Na
pasta raiz, há o nosso arquivo pom.xml.
13. Maven
Rodando o Build
Assim, geramos toda uma estrutura de projeto com código fonte e um arquivo pom.xml. Agora,
queremos criar um executável. Para essa mudança em nosso projeto precisamos realizar o seguinte
comando Maven.
$ mvn compile
Como resultado, Maven foi executado em todas as fases do ciclo de vida do projeto, que foram
necessários para a fase de empacotamento. Resolveu as dependências, carregou o artefato JUnit em
seu repositório local e fez o build dos fontes. Ele mesmo executou o teste do JUnit. Todos os arquivos
gerados foram colocados na pasta de destino na raiz do projeto.
Agora você pode executar o pacote.
$ java -cp target/com.vogella.build.maven.java-1.0-SNAPSHOT.jar com.vogella.build.
maven.java.App Hello World!
14. Maven
Rodar Fases Específicas
Assim, geramos toda uma estrutura de projeto com código fonte e um arquivo pom.xml. Agora,
queremos obter um executável fora do nosso projeto. Para conseguir isso, temos que mudarna raiz
do projeto e fazer o Maven gerar o pacote com a fase de empacotamento como objetivo.
$ cd consulter-zeus
$ mvn package
Em vez de executar um build completo, também é possível apenas executar as fases individuais de
um ciclo de vida do projeto.
Por exemplo, se são necessárias apenas os resultados do teste:
$ mvn test
Para limpar o projeto e assim remover os arquivos gerados na pasta ./target/:
$ mvn clean