2. É uma ferramenta de construção,
gerenciamento e compreensão de aplicações
Também do grupo apache
Revolucionou o gerenciamento de
dependências em Java
Não precisamos mais adicionar as bibliotecas
no controle de versão!
Introduziu o conceito do repositório central
Maven
4. 1. Compilar o código-fonte
2. Copiar os recursos
3. Compilar e executar os testes
4. Empacotar o projeto
5. Distribuir (deploy) o projeto
6. Limpar tudo
5. Diferentemente do ant, não tem tasks e targets
Já existem tarefas pré-definidas, chamadas goals, que
são agrupadas por plugins
Por exemplo, o plugin compiler possui goals:
compile: compila o código fonte
testCompile: compila os unit tests
Pode invocar goal por goal, ou então usar os phases
Uma phase é composta por uma série de goals pré definidos
Por exemplo, a fase de package (empacotar) é composta por
compilar, testar e gerar o jar
Não precisamos escrever nada disso
Basta declararmos o que o projeto necessita, que o
maven se encarrega do resto
6. A grande diferença entre o build.xml do Ant e o pom.xml do
Maven é o paradigma.
No Ant usamos esse XML praticamente como uma linguagem de
programação, onde você da comandos em relação ao build do
projeto.
No Maven usamos o XML para definir a estrutura do projeto, e a
partir dessas declarações o Maven possui targets bem definidos
que usam essas informações para saber como realizar aquela
tarefa.
Exemplo: para compilar com oAnt criamos um target que chama o
javac, mas para compilar com o Maven usamos um target já
existente (não o criamos), e ele vai usar a informação que define
onde está o código fonte e para onde ele deve ser compilado
(sendo que muitas dessas informações possuem convenções e
defaults, e nem precisam ser configuradas)
7. Baixar a última versão em
http://maven.apache.org
Adicionar a variável de sistema:
M2_HOME, com valor:
C:Program Filesapache-maven-3.1.0
Adicionar %M2_HOME%/bin ao path do
windows como M2
Testar rodando mvn --version na linha
de comando
8. Vá no eclipse, help, install new software
All available sites
Selecione as opções:
Maven IntegrationWTP
Maven Integration for Eclipse
Caso não encontre, adicione o site:
http://download.eclipse.org/technology/m2e/releases
9. É o Project Object Model
Representado pelo arquivo pom.xml
Ele descreve o projeto / aplicação:
Nome eVersão
Tipo do Artifact (jar, war, …)
Endereço dos códigos-fontes
Dependências
Plugins
Perfis (configurações de build específicas)
11. Ao desenvolver um projeto, precisamos de bibliotecas
externas e o maven para gerenciá-las!
Ele vai baixar, a partir do repositório central de artefatos:
o POM de cada biblioteca externa configurada
o jar de cada biblioteca e de suas dependências,
recursivamente (gerenciamento de bibliotecas transitivo)
Milhares de artefatos estão cadastrados no repositório
central do maven
http://www.mvnrepository.com/
Os jars baixados são armazenados na pasta repository
dentro de M2_HOME
Se mais de um projeto depende do mesmo jar, ele não é
baixado de novo
12. compile: Uma dependência com escopo compile
está disponível em todas as fases. É o valor
padrão
provided: Quando a biblioteca deve ser usada
para compilar aplicação mas não é distribuída.
Usada quando o servidor de aplicações deverá
prover o JAR
runtime: Biblioteca não é necessária para a
compilação e sim para a execução (ex. JDBC
drivers)
test: Somente usadas para compilar e executar
testes (ex. JUnit)
14. Local:
É uma pasta em sua máquina (.m2 em %USER_HOME% )
É criado quando qualquer comando maven for executado pela
primeira vez
Central:
Fornecido pela comunidade Maven
Contém um grande número de bibliotecas comumente
utilizadas
Quando Maven não encontra qualquer dependência no
repositório local, ele começa a procurar no repositório central
Necessita da internet e não precisa ser configurado
Remoto
Repositórios que podem ser adicionados ao POM quando as
bibliotecas não se encontram no repositório central
15. Uma phase é composta por uma série de
goals pré definidos
Ao executar uma fase, todas as fases
anteriores a ela são chamadas
Fazem parte do ciclo de build do Maven
Para executar:
mvn [phase-name]
16. Representa uma tarefa específica que contribui
para a construção e gestão de um projeto
Pode estar vinculado a zero ou mais fases
Um goal não vinculado a qualquer fase pode ser
executado fora do ciclo de vida por invocação
direta
A ordem de execução depende da ordem na qual
o(s) goal(s) e a(s) fase(s) são invocadas
Por exemplo, considere o comando:
mvn clean dependency:copy-dependencies
package
Os argumentos clean e package são fases de construção,
enquanto dependency:copy-dependencies é um goal
17. É uma sequência de fases (phases) bem
definidas que definem a ordem em que os
goals devem ser executados
Aqui uma fase representa um estágio do ciclo
de vida
18. validate: valida se o projeto está correto e todas as informações
necessárias estão disponíveis
compile:compila o código fonte do projeto
test: executa os testes unitários do código compilado, usando
uma ferramenta de testes unitários, como o junit
package: empacota o código compilado de acordo com formato
escolhido (JAR,WAR, ...)
integration-test: processa e faz o deploy do pacote em um
ambiente onde os testes de integração podem ser executados
verify: executa checagens para verificar se o pacote é válido e
atende aos critérios de qualidade
install: instala o pacote no repositório local, para ser usado como
dependência de outros projetos locais
deploy: feito em ambiente de integração ou de release, copia o
pacote final para um repositório remoto para ser compartilhado
entre desenvolvedores e projetos
19. O maven possui muitos plugins e goals
diferentes já prontos
http://maven.apache.org/plugins/
Fornece um conjunto de goals que podem ser
executados:
mvn [plugin-name]:[goal-name]
É possível adicionar outros plugins não
existentes no POM
20. clean: Limpa o diretório target e o apaga depois
do build
compiler: Compilar os códigos Java
surefile: Executar testes JUnit e criar relatórios
de testes
jar: Construir JAR
war: ConstruirWAR
javadoc: Gerar Javadoc
antrun: Executar um conjunto de tasks do ant de
qualquer fase mencionada no build
21.
22. É um conjunto de valores de configuração que
podem ser usadas para definir ou substituir os
valores padrão de uma construção do Maven
Por exemplo, o caminho do servidor de banco de
dados no desenvolvimento, teste e ambientes de
produção
Serve para personalizar a construção para
diferentes ambientes
Como produção, desenvolvimento, tests, stage, ...
São especificados no POM usando os elementos
activeProfile e profile
São acionados de diferentes maneiras
23. Tipos:
Project: Definido no POM do projeto
User: Definido no settings do Maven
(%USER_HOME%/.m2/settings.xml)
Global: Definido no settings global do Maven
(%M2_HOME%/conf/settings.xml)
Ativação:
Explicitamente usando o console
Através de configurações do Maven
Com base em variáveis de ambiente (variáveis usuário /
sistema)
Configurações de SO (por exemplo, famíliaWindows)
Presente / faltando arquivos
24. É um plugin do Maven que cria um protótipo
(template) de projeto do Maven
Usado na linha de comando:
mvn archetype:create
Só definir o groupID, artifactID, version e o
package referentes ao seu projeto
Depois disso você terá uma estrutura de projeto
pronta para ser usada
Exemplo:
maven-archetype-webapp: Gera um projeto
inicial para web
25. archetype:generate
cria um projeto Maven a partir de um modelo,
guiando o usuário através de um wizard que fará
as configurações necessárias
archetype:create-from-project
cria um archetype a partir de um projeto existente.
archetype:crawl
busca no repositório por archetypes e atualiza o
catálogo