SlideShare uma empresa Scribd logo
1 de 49
Baixar para ler offline
Maven - Curso Básico
Aula 01 - Introdução
Autor
1. Édipo Daniel Aragão;
2. Entusiasta Tecnológico;
3. Trabalho há 4 anos no Venturus;
4. Professor de Programação na ESAMC;
5. Trabalho há 10 anos com Desenvolvimento de Software;
6. Graduado em Engenharia da Computação (2010) - PUC-Campinas;
7. Pós Graduado em Mineração para Dados Complexos (2016) - Unicamp;
8. E seu guia nesta jornada sobre o Maven!
2Édipo Daniel Aragão - Maven Básico
Propostas, Bibliografia etc.
1. Bibliografia
a. Maven The Reference Guide - Sonartype;
b. Maven By Example - Sonartype;
c. Conteúdos diversos da internet.
3Édipo Daniel Aragão - Maven Básico
Agenda
● Aula 1: Introdução;
● Aula 2: O POM - Parte 1;
● Aula 3: O POM - Parte 2;
● Aula 4: O POM - Parte 3;
● Aula 5: Ciclos de Vida;
● Aula 6: Build Profiles;
● Aula 7: Plugins, CLI e Conclusão;
4Édipo Daniel Aragão - Maven Básico
Introdução
“O Maven é uma ferramenta para projetos gerirem e construírem, de forma
eficiente, diversos módulos interdependentes, cada um com bibliotecas que fazem
(eventualmente) uso de centenas de componentes terceiros. Com isso, ele reduziu
a fase de "build management", antes fator relevante no desenvolvimento de
software.”
5Édipo Daniel Aragão - Maven Básico
Definição 1
"Maven é uma ferramenta de gestão de projetos que engloba num project object
model (pom), um conjunto de padrões, um ciclo de vida do projeto (life cicle), um
sistema de gerenciamento de dependências, e lógica para a execução (de goals)
de plugins em phases definidas no ciclo de vida. Ao usar o Maven , você descreve
o seu projeto usando project object model (bem definido) e, então o Maven pode
executar sua lógica transversal sobre uma série de plugins."
Mas o que é o Maven?
6Édipo Daniel Aragão - Maven Básico
Mas o que é o Maven?
Definição 2
"Conceitualmente, o Apache Maven, ou somente Maven, é uma ferramenta para
simplificar e padronizar processos relacionados a construção (build), publicação
de informações e compartilhamento de projetos de software baseados em Java.1
"
1. Existem plugins que permitem a utilização do Maven com outras linguagens, mas seu propósito inicial
eram projetos Java.
7Édipo Daniel Aragão - Maven Básico
Mas o que é o Maven?
1. Build Tool:
Para muitos, o Maven é uma ferramenta de construção (“similar” ao Ant, Make
ou Gradle) que gera um artefato sobre dado código fonte. Um container
abstrato para execução de tarefas de build.
2. Management Tool:
Para alguns, pode-se também atribuir ao Maven a ideia de uma ferramenta de
gestão de projetos uma vez que ele permite fácil controle de versões, inclusão
de informações de projeto, geração de javadocs, páginas de projeto e
artefatos com código fonte.
8Édipo Daniel Aragão - Maven Básico
Princípios
O Maven foi criado sob os seguintes princípios:
1. Simplificar o processo de construção de projetos;
2. Simplificar o entendimento da construção de projetos;
3. Tornar uniforme a construção de projetos;
4. Padronizar estrutura de projetos;
5. Potencializar boas práticas de desenvolvimento.
9Édipo Daniel Aragão - Maven Básico
Porque usar o Maven?
Seguem algumas das principais motivações para o uso do Maven:
1. Permite que builds possam ser repetidos com pouco ou nenhum esforço em
qualquer ambiente:
a. Um grande problema para quem utilizava o Make (somente Linux) e para quem utiliza o Ant
(que requer ajustes de Script).
2. Gerência dependências da aplicação e suas respectivas dependências
transitivas, uma das maiores razões pelos quais é utilizado:
a. Entende-se dependência como uma biblioteca (um jar file por exemplo) que será utilizado;
b. Dependência transitiva é uma dependência de uma dependência.
10Édipo Daniel Aragão - Maven Básico
Porque usar o Maven?
Seguem algumas das principais motivações para o uso do Maven:
1. Oferece integração com as principais IDEs (Eclipse, Netbeans e IntelliJ) além
de ter o mesmo comportamento standalone (em linha de comando);
2. Trabalha com um repositório local, um ponto importante quando começamos a
fazer diversos builds;
3. É uma escolha compatível com a maioria das ferramentas de integração
Jenkins, Cruise Control etc.;
4. Tem disponível uma grande variedade de plugins.
11Édipo Daniel Aragão - Maven Básico
Quem criou o Maven?
Jason Van Zyl é quem iniciou o projeto Apache Maven!
12Édipo Daniel Aragão - Maven Básico
Quem criou o Maven?
Ele se questionava quanto ao tempo dedicado a infraestrutura do projeto e não ao
desenvolvimento. Jason queria:
1. Um modelo para o projeto;
2. Um lugar onde ele conseguiria ver tudo que é pertinente daquele projeto;
3. Poupar o tempo das pessoas tornando-as aptas a encontrar o que procuram
num mesmo lugar;
4. Uma estrutura de diretórios ideal, em que não seja preciso caçar bibliotecas,
códigos-fonte ou documentos;
5. Ele queria: Convenção sobre Configuração!
13Édipo Daniel Aragão - Maven Básico
Quer saber a história completa?
1. Acesse o link e entenda como o Maven surgiu:
https://maven.apache.org/background/history-of-maven.html
"There was no way to easy template Ant builds in those days and every ant
build appeared to be different and I found this incredibly frustrating and futile. I
figured who really cares how the build works so long as it works and is easy to use.
The infrastructure of a project is incredibly important but the value of a project lies
in the application being developed."
14Édipo Daniel Aragão - Maven Básico
Convenção Sobre Configuração
Convention Over Configuration.
É um “paradigma”!
Mas o que é um paradigma?
Paradigma é um modelo ou padrão a seguir. Etimologicamente, este termo
tem origem no grego paradeigma que significa modelo ou padrão,
correspondendo a algo que vai servir de modelo ou exemplo a ser seguido
em determinada situação.
15Édipo Daniel Aragão - Maven Básico
Convenção Sobre Configuração
1. Sistemas, frameworks, bibliotecas devem assumir valores default (padrão);
2. Maven incorpora este paradigma;
a. Maven tem opiniões que não deveriam ser desafiadas.
3. Sempre há alternativas para definir configurações específicas (flexibilidade
mantida);
4. Um primeiro exemplo, Maven assume que:
${basedir}/src/main/java - contém o código fonte
${basedir}/src/main/resources - contém os resources
${basedir}/src/main/test - contém os testes
${basedir}/target/classes - conterá os byte codes compilados
${basedir}/target/ - conterá um .jar (por padrão)
16Édipo Daniel Aragão - Maven Básico
Uma Interface Comum
1. Antes do Maven, cada projeto tinha alguém responsável por gerenciar um
modelo particular de construção de cada projeto;
2. Um desenvolvedor precisava demandar bastante tempo para entender toda a
idiossincrasia do build daquele projeto;
3. A período antes do Maven era de ineficiência, do "Build Engineer";
4. Hoje com Maven você pode simplesmente baixar o projeto e tentar um mvn
install;
5. O Sucesso do Maven se deve a definição de uma interface comum de build.
17Édipo Daniel Aragão - Maven Básico
Uso Universal de Plugins
1. Maven foi projetado para delegar a maioria das responsabilidades para
plugins, os quais podem afetar o Maven Lifecycle e oferecer acesso as
goals;
2. A inteligência do Maven vem dos plugins, e eles são obtidos do Maven
Repository;
3. O fato do Maven poder obter plugins e dependências do repositório permite o
reuso universal da lógica de build;
18Édipo Daniel Aragão - Maven Básico
Maven e Outras Tools
1. O Maven é uma alternativa (ou vice-versa):
a. Ant + Ivy;
b. Gradle;
c. Buildr.
2. Mas o Maven é muito maior do que essas comparações;
3. O Maven refere-se a muito mais, que a própria ferramenta.
19Édipo Daniel Aragão - Maven Básico
Rebel Labs
1. Fez uma pesquisa em 2014, com 2000 desenvolvedores, sobre quais
tecnologias utilizavam. Fonte:
http://zeroturnaround.com/rebellabs/ides-vs-build-tools-how-eclipse-intelli
j-idea-netbeans-users-work-with-maven-ant-sbt-gradle/
2. Seguem alguns dos resultados...
20Édipo Daniel Aragão - Maven Básico
Rebel Labs
1. IDE + Build Tool
21Édipo Daniel Aragão - Maven Básico
Eu li direito? SBT?
1. Ma-oeee!
2. Sim, criado em 2008:
a. Iniciativa de Liminha, Lombard e Ivo Holanda;
b. Última versão: SBT Hebe.
3. Build tool baseada em scripts de novelas Mexicanas!
22Édipo Daniel Aragão - Maven Básico
Eu li direito? SBT?
1. Simple Build Tool;
2. Pode ser usada para Java.
23
Rebel Labs
1. Eclipse
24Édipo Daniel Aragão - Maven Básico
Rebel Labs
1. Intellij
25Édipo Daniel Aragão - Maven Básico
Rebel Labs
1. Netbeans
26Édipo Daniel Aragão - Maven Básico
Apache Maven vs Apache Ant
1. Maven vem do hebreu, mēbhīn e significa:
a. Pessoa conhecedora das coisas;
b. Um especialista!
2. Ant quer dizer formiga;
3. Com qual você prefere trabalhar com qual?
27Édipo Daniel Aragão - Maven Básico
Ant
28Édipo Daniel Aragão - Maven Básico
29
Maven
Édipo Daniel Aragão - Maven Básico
30
Maven
Édipo Daniel Aragão - Maven Básico
Mas o que acontece?
Se executar mvn install no terminal, utilizando este pom.xml ele irá:
1. Processar os recursos;
2. Compilar o código fonte;
3. Executar testes de unidade;
4. Criar um jar;
5. Instalar o jar no repositório local.
31Édipo Daniel Aragão - Maven Básico
Apache Ant
1. Não tem convenções formais;
2. Ant é procedural:
a. Você precisa dizer ao Ant exatamente o que fazer e quando fazê-lo;
3. Ant não tem um ciclo de vida:
a. Você tem que definir metas e dependências;
b. Você tem que anexar uma sequência de tarefas para cada meta
manualmente.
32Édipo Daniel Aragão - Maven Básico
Apache Maven
1. Maven tem convenções:
a. Exemplo, sabe onde seu código-fonte está porque você seguiu a
convenção.
2. Maven é declarativo;
3. Maven tem um ciclo de vida:
a. mvn install evitou que fossem declaradas uma série de comandos.
4. Maven pode executar tarefas do Ant através de um plugin!
33Édipo Daniel Aragão - Maven Básico
Download e Versões
1. Maven teve sua primeira release 1.x em Junho de 2007;
2. Atualmente está na versão 3.x;
3. Uso da versão 1.x e 2.x é fortemente desencorajado (cai a mão ☺):
a. Ambos não tem mais suporte!
4. Retrocompatibilidade parcial entre versão 2.x e 3.x;
5. Download: https://maven.apache.org/download.cgi
a. apache-maven-3.3.x-bin.tar.gz
b. apache-maven-3.3.x-bin.zip
34Édipo Daniel Aragão - Maven Básico
Download e Versões
1. Alguns detalhes para instalação do Maven em diferentes plataformas,
utilizando boas práticas;
2. Vamos assumir que seu sistema tem uma JDK compatível:
a. É recomendável trabalhar com a versão da JDK mais atualizada possível;
b. Maven 3.0.x → Java ≥ 5;
c. Maven 3.2.x → Java ≥ 6;
d. Maven 3.3.x (latest version) → Java ≥ 7.
Neste link você encontra a versão do Maven e a versão requerida do JDK:
http://maven.apache.org/docs/history.html
35Édipo Daniel Aragão - Maven Básico
Verificando o Java
1. java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
36Édipo Daniel Aragão - Maven Básico
Como faço isso?!
~/Downloads$ sudo cp apache-maven-3.3.9-bin.tar.gz /opt/
~/Downloads$ cd /opt/
/opt$ sudo tar -xzf apache-maven-3.3.9-bin.tar.gz
/opt$ sudo rm apache-maven-3.3.9-bin.tar.gz
/opt$ sudo ln -s apache-maven-3.3.9 maven
/opt$ export PATH=/opt/maven/bin:${PATH}
37Édipo Daniel Aragão - Maven Básico
Funciona somente na Sessão
~/Downloads$ sudo cp apache-maven-3.3.9-bin.tar.gz /opt/
~/Downloads$ cd /opt/
/opt$ sudo tar -xzf apache-maven-3.3.9-bin.tar.gz
/opt$ sudo rm apache-maven-3.3.9-bin.tar.gz
/opt$ sudo ln -s apache-maven-3.3.9 maven
/opt$ export PATH=/opt/maven/bin:${PATH}
38Édipo Daniel Aragão - Maven Básico
Por Usuário
~/Downloads$ sudo cp apache-maven-3.3.9-bin.tar.gz /opt/
~/Downloads$ cd /opt/
/opt$ sudo tar -xzf apache-maven-3.3.9-bin.tar.gz
/opt$ sudo rm apache-maven-3.3.9-bin.tar.gz
/opt$ sudo ln -s apache-maven-3.3.9 maven
/opt$ sudo gedit ~/.profile
Adicione as seguintes linhas ao fim do arquivo:
# Maven
export PATH=/opt/maven/bin:${PATH}
Neste caso utilizamos o .profile, mas eventualmente poderia ser .bash_login.
39Édipo Daniel Aragão - Maven Básico
Para Todos Usuários
~/Downloads$ sudo cp apache-maven-3.3.9-bin.tar.gz /opt/
~/Downloads$ cd /opt/
/opt$ sudo tar -xzf apache-maven-3.3.9-bin.tar.gz
/opt$ sudo rm apache-maven-3.3.9-bin.tar.gz
/opt$ sudo ln -s apache-maven-3.3.9 maven
/opt$ sudo gedit /etc/environment
Adicione no final desta linha:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
:/usr/games:/usr/local/games:/opt/maven/bin"
40Édipo Daniel Aragão - Maven Básico
Mas porquê no /opt/?
1. Você sabe porquê é instalado no opt?
2. Você pode checar com o comando:
a. $ man hier
3. Ou no seguintes sites:
a. http://www.pathname.com/fhs/
b. http://www.pathname.com/fhs/pub/fhs-2.3.pdf
4. Em geral são instalados pacotes opcionais, fora dos pacotes padrão do
Sistema Operacional.
41Édipo Daniel Aragão - Maven Básico
Vamos instalar no Windows...
1. Extrair o conteúdo em c:Program Filesapache-maven-3.3.x;
2. Adicionar através do Painel de Controle nas variáveis de ambiente;
42Édipo Daniel Aragão - Maven Básico
Testando
~$ mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5;
2015-11-10T14:41:47-02:00)
Maven home: /opt/maven
Java version: 1.8.0_91, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.4.0-28-generic", arch: "amd64",
family: "unix"
43Édipo Daniel Aragão - Maven Básico
Detalhes da Instalação
1. A instalação é bastante pequena, e o Maven irá baixar plugins e dependências
na primeira execução (sob demanda).
/opt$ ls apache-maven-3.3.9 -p1
bin/
boot/
conf/
lib/
LICENSE
NOTICE
44Édipo Daniel Aragão - Maven Básico
Detalhes da Instalação
1. LICENSE.txt contém a licença de software para o Apache Maven;
2. NOTICE.txt contém alguns avisos e atribuições necessárias (bibliotecas Maven
que depende);
3. README.txt contém algumas instruções de instalação.
4. bin/ contém o script mvn que executa Maven.
5. boot/ contém um arquivo JAR (classwords - 1.1.jar ), que é responsável pela criação
do Classe Loader em que Maven é executado.
6. conf/ contém um settings.xml global que pode ser utilizado para personalizar o
comportamento da instalação do Maven.
7. Evite mudar esse arquivo, procure usar ~/.m2.
8. lib/ contém um jar que é o núcleo de Maven.
45Édipo Daniel Aragão - Maven Básico
Configurações Específicas de
Usuário e Repositório
Ao utilizar Maven ele irá criar um diretório ~/.m2 contendo:
1. ~/.m2/settings.xml:
Configurações específicas do usuário:
a. autenticação
b. repositórios
c. etc.
2. ~/.m2/repository/:
Repositório local do Maven, onde ele armazena cópias de dependências.
46Édipo Daniel Aragão - Maven Básico
Configurações Específicas de
Usuário e Repositório
Para atualizar o Maven basta:
1. Remover a versão atual;
2. Substituir por uma versão mais nova;
3. Recriar o link simbólico nos Unix based systems;
4. No caso Microsoft, é preciso atualizar as variáveis de ambiente.
Para remoção basta remover
1. Remover a versão atual;
2. Remover eventuais links e paths nos Unix based systems;
3. Remover das variáveis de ambiente no caso Microsoft.
47Édipo Daniel Aragão - Maven Básico
Licença
O Maven está sob a Licença Apache.
Permite:
1. Fazer download livremente, para propósitos pessoais e comerciais.
2. Usar e distribuir em pacotes que você criar.
Não Permite:
1. Redistribuir qualquer software de origem da Apache sem a devida atribuição ;
2. Utilizar marcas de propriedade da Apache Software Foundation de forma que possa indicar ou
sugerir que a Fundação apoia a sua distribuição;
3. Utilizar marcas de propriedade do Apache Software Foundation de forma que possa indicar ou
sugerir que você criou o software Apache em questão.
Requer:
1. Incluir uma cópia da licença em qualquer redistribuição que você pode fazer;
2. Fornecer atribuição clara à Apache Software Foundation para quaisquer distribuições que incluem
seus programas.
48Édipo Daniel Aragão - Maven Básico
Será que isso funciona?!
1. Vamos fazer o build do pom mínimo para garantir que ele funciona!
49Édipo Daniel Aragão - Maven Básico

Mais conteúdo relacionado

Mais procurados

Pyramid - O Framework Web para Todos
Pyramid - O Framework Web para TodosPyramid - O Framework Web para Todos
Pyramid - O Framework Web para TodosRuda Filgueiras
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: IntroduçãoJugVale
 
Maven e Nexus. O que são essas ferramentas?
Maven e Nexus. O que são essas ferramentas?Maven e Nexus. O que são essas ferramentas?
Maven e Nexus. O que são essas ferramentas?Jocsa Rosendo
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoiMasters
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosDiego Santos
 
Simtecce 2011 Integracao Continua
Simtecce 2011 Integracao ContinuaSimtecce 2011 Integracao Continua
Simtecce 2011 Integracao ContinuaPwC
 
UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsStefan Teixeira
 
Lab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvLab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvPedro Fernandes Vieira
 
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANTAutomação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANTelliando dias
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizadosThiago Rodrigues
 
Jenkins, o CI ao seu dispor
Jenkins, o CI ao seu disporJenkins, o CI ao seu dispor
Jenkins, o CI ao seu dispors4nx
 
JBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 FlorianópolisJBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 FlorianópolisGeorge Gastaldi
 
Jenkins integrando e estendendo.
Jenkins integrando e estendendo.Jenkins integrando e estendendo.
Jenkins integrando e estendendo.Leonardo Kobus
 

Mais procurados (20)

Maven na prática
Maven na práticaMaven na prática
Maven na prática
 
Aula maven
Aula   mavenAula   maven
Aula maven
 
Apresentacao de Introdução ao Apache Maven
Apresentacao de Introdução ao Apache MavenApresentacao de Introdução ao Apache Maven
Apresentacao de Introdução ao Apache Maven
 
Pyramid - O Framework Web para Todos
Pyramid - O Framework Web para TodosPyramid - O Framework Web para Todos
Pyramid - O Framework Web para Todos
 
Introdução a projetos baseados em apache maven
Introdução a projetos baseados em apache mavenIntrodução a projetos baseados em apache maven
Introdução a projetos baseados em apache maven
 
Maven
MavenMaven
Maven
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: Introdução
 
Maven 2
Maven 2Maven 2
Maven 2
 
Maven e Nexus. O que são essas ferramentas?
Maven e Nexus. O que são essas ferramentas?Maven e Nexus. O que são essas ferramentas?
Maven e Nexus. O que são essas ferramentas?
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimento
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizados
 
Simtecce 2011 Integracao Continua
Simtecce 2011 Integracao ContinuaSimtecce 2011 Integracao Continua
Simtecce 2011 Integracao Continua
 
UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao Jenkins
 
Lab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvLab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenv
 
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANTAutomação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT
 
Controle de versão com Git
Controle de versão com GitControle de versão com Git
Controle de versão com Git
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
Jenkins, o CI ao seu dispor
Jenkins, o CI ao seu disporJenkins, o CI ao seu dispor
Jenkins, o CI ao seu dispor
 
JBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 FlorianópolisJBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 Florianópolis
 
Jenkins integrando e estendendo.
Jenkins integrando e estendendo.Jenkins integrando e estendendo.
Jenkins integrando e estendendo.
 

Semelhante a Maven Curso Introdução

Projetos Java com Maven
Projetos Java com MavenProjetos Java com Maven
Projetos Java com MavenEdgar Dantas
 
Maven 3, Sonar e Hudson
Maven 3, Sonar e HudsonMaven 3, Sonar e Hudson
Maven 3, Sonar e HudsonRodrigo Branas
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaÁlvaro Farias Pinheiro
 
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Getúlio Strapazzon
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO IOs Fantasmas !
 
Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaMariana de Azevedo Santos
 
Testes E2E em Cypress com JS
Testes E2E em Cypress com JSTestes E2E em Cypress com JS
Testes E2E em Cypress com JSNàtali Cabral
 
Introdução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebIntrodução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebCícero Quarto
 
Introdução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceIntrodução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceGlobalcode
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos JavaMarcio Marinho
 
Inovando na plataforma Java
Inovando na plataforma JavaInovando na plataforma Java
Inovando na plataforma JavaEteg
 
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo FilhoDesenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo FilhoTchelinux
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java FundamentosWilson Lima
 

Semelhante a Maven Curso Introdução (20)

Apache maven
Apache mavenApache maven
Apache maven
 
Plugin Maven no Eclipse
Plugin Maven no EclipsePlugin Maven no Eclipse
Plugin Maven no Eclipse
 
Projetos Java com Maven
Projetos Java com MavenProjetos Java com Maven
Projetos Java com Maven
 
Maven 3, Sonar e Hudson
Maven 3, Sonar e HudsonMaven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
 
Maven em 10 minutos
Maven em 10 minutosMaven em 10 minutos
Maven em 10 minutos
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
Aula 1a.ppt
Aula 1a.pptAula 1a.ppt
Aula 1a.ppt
 
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
 
Fundamentos Java - 01
Fundamentos Java - 01Fundamentos Java - 01
Fundamentos Java - 01
 
Aula 1 1
Aula 1 1Aula 1 1
Aula 1 1
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
 
Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em Java
 
Testes E2E em Cypress com JS
Testes E2E em Cypress com JSTestes E2E em Cypress com JS
Testes E2E em Cypress com JS
 
Introdução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebIntrodução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide Web
 
Introdução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceIntrodução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open Source
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
Inovando na plataforma Java
Inovando na plataforma JavaInovando na plataforma Java
Inovando na plataforma Java
 
Inovando na Plataforma Java
Inovando na Plataforma JavaInovando na Plataforma Java
Inovando na Plataforma Java
 
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo FilhoDesenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
 

Maven Curso Introdução

  • 1. Maven - Curso Básico Aula 01 - Introdução
  • 2. Autor 1. Édipo Daniel Aragão; 2. Entusiasta Tecnológico; 3. Trabalho há 4 anos no Venturus; 4. Professor de Programação na ESAMC; 5. Trabalho há 10 anos com Desenvolvimento de Software; 6. Graduado em Engenharia da Computação (2010) - PUC-Campinas; 7. Pós Graduado em Mineração para Dados Complexos (2016) - Unicamp; 8. E seu guia nesta jornada sobre o Maven! 2Édipo Daniel Aragão - Maven Básico
  • 3. Propostas, Bibliografia etc. 1. Bibliografia a. Maven The Reference Guide - Sonartype; b. Maven By Example - Sonartype; c. Conteúdos diversos da internet. 3Édipo Daniel Aragão - Maven Básico
  • 4. Agenda ● Aula 1: Introdução; ● Aula 2: O POM - Parte 1; ● Aula 3: O POM - Parte 2; ● Aula 4: O POM - Parte 3; ● Aula 5: Ciclos de Vida; ● Aula 6: Build Profiles; ● Aula 7: Plugins, CLI e Conclusão; 4Édipo Daniel Aragão - Maven Básico
  • 5. Introdução “O Maven é uma ferramenta para projetos gerirem e construírem, de forma eficiente, diversos módulos interdependentes, cada um com bibliotecas que fazem (eventualmente) uso de centenas de componentes terceiros. Com isso, ele reduziu a fase de "build management", antes fator relevante no desenvolvimento de software.” 5Édipo Daniel Aragão - Maven Básico
  • 6. Definição 1 "Maven é uma ferramenta de gestão de projetos que engloba num project object model (pom), um conjunto de padrões, um ciclo de vida do projeto (life cicle), um sistema de gerenciamento de dependências, e lógica para a execução (de goals) de plugins em phases definidas no ciclo de vida. Ao usar o Maven , você descreve o seu projeto usando project object model (bem definido) e, então o Maven pode executar sua lógica transversal sobre uma série de plugins." Mas o que é o Maven? 6Édipo Daniel Aragão - Maven Básico
  • 7. Mas o que é o Maven? Definição 2 "Conceitualmente, o Apache Maven, ou somente Maven, é uma ferramenta para simplificar e padronizar processos relacionados a construção (build), publicação de informações e compartilhamento de projetos de software baseados em Java.1 " 1. Existem plugins que permitem a utilização do Maven com outras linguagens, mas seu propósito inicial eram projetos Java. 7Édipo Daniel Aragão - Maven Básico
  • 8. Mas o que é o Maven? 1. Build Tool: Para muitos, o Maven é uma ferramenta de construção (“similar” ao Ant, Make ou Gradle) que gera um artefato sobre dado código fonte. Um container abstrato para execução de tarefas de build. 2. Management Tool: Para alguns, pode-se também atribuir ao Maven a ideia de uma ferramenta de gestão de projetos uma vez que ele permite fácil controle de versões, inclusão de informações de projeto, geração de javadocs, páginas de projeto e artefatos com código fonte. 8Édipo Daniel Aragão - Maven Básico
  • 9. Princípios O Maven foi criado sob os seguintes princípios: 1. Simplificar o processo de construção de projetos; 2. Simplificar o entendimento da construção de projetos; 3. Tornar uniforme a construção de projetos; 4. Padronizar estrutura de projetos; 5. Potencializar boas práticas de desenvolvimento. 9Édipo Daniel Aragão - Maven Básico
  • 10. Porque usar o Maven? Seguem algumas das principais motivações para o uso do Maven: 1. Permite que builds possam ser repetidos com pouco ou nenhum esforço em qualquer ambiente: a. Um grande problema para quem utilizava o Make (somente Linux) e para quem utiliza o Ant (que requer ajustes de Script). 2. Gerência dependências da aplicação e suas respectivas dependências transitivas, uma das maiores razões pelos quais é utilizado: a. Entende-se dependência como uma biblioteca (um jar file por exemplo) que será utilizado; b. Dependência transitiva é uma dependência de uma dependência. 10Édipo Daniel Aragão - Maven Básico
  • 11. Porque usar o Maven? Seguem algumas das principais motivações para o uso do Maven: 1. Oferece integração com as principais IDEs (Eclipse, Netbeans e IntelliJ) além de ter o mesmo comportamento standalone (em linha de comando); 2. Trabalha com um repositório local, um ponto importante quando começamos a fazer diversos builds; 3. É uma escolha compatível com a maioria das ferramentas de integração Jenkins, Cruise Control etc.; 4. Tem disponível uma grande variedade de plugins. 11Édipo Daniel Aragão - Maven Básico
  • 12. Quem criou o Maven? Jason Van Zyl é quem iniciou o projeto Apache Maven! 12Édipo Daniel Aragão - Maven Básico
  • 13. Quem criou o Maven? Ele se questionava quanto ao tempo dedicado a infraestrutura do projeto e não ao desenvolvimento. Jason queria: 1. Um modelo para o projeto; 2. Um lugar onde ele conseguiria ver tudo que é pertinente daquele projeto; 3. Poupar o tempo das pessoas tornando-as aptas a encontrar o que procuram num mesmo lugar; 4. Uma estrutura de diretórios ideal, em que não seja preciso caçar bibliotecas, códigos-fonte ou documentos; 5. Ele queria: Convenção sobre Configuração! 13Édipo Daniel Aragão - Maven Básico
  • 14. Quer saber a história completa? 1. Acesse o link e entenda como o Maven surgiu: https://maven.apache.org/background/history-of-maven.html "There was no way to easy template Ant builds in those days and every ant build appeared to be different and I found this incredibly frustrating and futile. I figured who really cares how the build works so long as it works and is easy to use. The infrastructure of a project is incredibly important but the value of a project lies in the application being developed." 14Édipo Daniel Aragão - Maven Básico
  • 15. Convenção Sobre Configuração Convention Over Configuration. É um “paradigma”! Mas o que é um paradigma? Paradigma é um modelo ou padrão a seguir. Etimologicamente, este termo tem origem no grego paradeigma que significa modelo ou padrão, correspondendo a algo que vai servir de modelo ou exemplo a ser seguido em determinada situação. 15Édipo Daniel Aragão - Maven Básico
  • 16. Convenção Sobre Configuração 1. Sistemas, frameworks, bibliotecas devem assumir valores default (padrão); 2. Maven incorpora este paradigma; a. Maven tem opiniões que não deveriam ser desafiadas. 3. Sempre há alternativas para definir configurações específicas (flexibilidade mantida); 4. Um primeiro exemplo, Maven assume que: ${basedir}/src/main/java - contém o código fonte ${basedir}/src/main/resources - contém os resources ${basedir}/src/main/test - contém os testes ${basedir}/target/classes - conterá os byte codes compilados ${basedir}/target/ - conterá um .jar (por padrão) 16Édipo Daniel Aragão - Maven Básico
  • 17. Uma Interface Comum 1. Antes do Maven, cada projeto tinha alguém responsável por gerenciar um modelo particular de construção de cada projeto; 2. Um desenvolvedor precisava demandar bastante tempo para entender toda a idiossincrasia do build daquele projeto; 3. A período antes do Maven era de ineficiência, do "Build Engineer"; 4. Hoje com Maven você pode simplesmente baixar o projeto e tentar um mvn install; 5. O Sucesso do Maven se deve a definição de uma interface comum de build. 17Édipo Daniel Aragão - Maven Básico
  • 18. Uso Universal de Plugins 1. Maven foi projetado para delegar a maioria das responsabilidades para plugins, os quais podem afetar o Maven Lifecycle e oferecer acesso as goals; 2. A inteligência do Maven vem dos plugins, e eles são obtidos do Maven Repository; 3. O fato do Maven poder obter plugins e dependências do repositório permite o reuso universal da lógica de build; 18Édipo Daniel Aragão - Maven Básico
  • 19. Maven e Outras Tools 1. O Maven é uma alternativa (ou vice-versa): a. Ant + Ivy; b. Gradle; c. Buildr. 2. Mas o Maven é muito maior do que essas comparações; 3. O Maven refere-se a muito mais, que a própria ferramenta. 19Édipo Daniel Aragão - Maven Básico
  • 20. Rebel Labs 1. Fez uma pesquisa em 2014, com 2000 desenvolvedores, sobre quais tecnologias utilizavam. Fonte: http://zeroturnaround.com/rebellabs/ides-vs-build-tools-how-eclipse-intelli j-idea-netbeans-users-work-with-maven-ant-sbt-gradle/ 2. Seguem alguns dos resultados... 20Édipo Daniel Aragão - Maven Básico
  • 21. Rebel Labs 1. IDE + Build Tool 21Édipo Daniel Aragão - Maven Básico
  • 22. Eu li direito? SBT? 1. Ma-oeee! 2. Sim, criado em 2008: a. Iniciativa de Liminha, Lombard e Ivo Holanda; b. Última versão: SBT Hebe. 3. Build tool baseada em scripts de novelas Mexicanas! 22Édipo Daniel Aragão - Maven Básico
  • 23. Eu li direito? SBT? 1. Simple Build Tool; 2. Pode ser usada para Java. 23
  • 24. Rebel Labs 1. Eclipse 24Édipo Daniel Aragão - Maven Básico
  • 25. Rebel Labs 1. Intellij 25Édipo Daniel Aragão - Maven Básico
  • 26. Rebel Labs 1. Netbeans 26Édipo Daniel Aragão - Maven Básico
  • 27. Apache Maven vs Apache Ant 1. Maven vem do hebreu, mēbhīn e significa: a. Pessoa conhecedora das coisas; b. Um especialista! 2. Ant quer dizer formiga; 3. Com qual você prefere trabalhar com qual? 27Édipo Daniel Aragão - Maven Básico
  • 28. Ant 28Édipo Daniel Aragão - Maven Básico
  • 31. Mas o que acontece? Se executar mvn install no terminal, utilizando este pom.xml ele irá: 1. Processar os recursos; 2. Compilar o código fonte; 3. Executar testes de unidade; 4. Criar um jar; 5. Instalar o jar no repositório local. 31Édipo Daniel Aragão - Maven Básico
  • 32. Apache Ant 1. Não tem convenções formais; 2. Ant é procedural: a. Você precisa dizer ao Ant exatamente o que fazer e quando fazê-lo; 3. Ant não tem um ciclo de vida: a. Você tem que definir metas e dependências; b. Você tem que anexar uma sequência de tarefas para cada meta manualmente. 32Édipo Daniel Aragão - Maven Básico
  • 33. Apache Maven 1. Maven tem convenções: a. Exemplo, sabe onde seu código-fonte está porque você seguiu a convenção. 2. Maven é declarativo; 3. Maven tem um ciclo de vida: a. mvn install evitou que fossem declaradas uma série de comandos. 4. Maven pode executar tarefas do Ant através de um plugin! 33Édipo Daniel Aragão - Maven Básico
  • 34. Download e Versões 1. Maven teve sua primeira release 1.x em Junho de 2007; 2. Atualmente está na versão 3.x; 3. Uso da versão 1.x e 2.x é fortemente desencorajado (cai a mão ☺): a. Ambos não tem mais suporte! 4. Retrocompatibilidade parcial entre versão 2.x e 3.x; 5. Download: https://maven.apache.org/download.cgi a. apache-maven-3.3.x-bin.tar.gz b. apache-maven-3.3.x-bin.zip 34Édipo Daniel Aragão - Maven Básico
  • 35. Download e Versões 1. Alguns detalhes para instalação do Maven em diferentes plataformas, utilizando boas práticas; 2. Vamos assumir que seu sistema tem uma JDK compatível: a. É recomendável trabalhar com a versão da JDK mais atualizada possível; b. Maven 3.0.x → Java ≥ 5; c. Maven 3.2.x → Java ≥ 6; d. Maven 3.3.x (latest version) → Java ≥ 7. Neste link você encontra a versão do Maven e a versão requerida do JDK: http://maven.apache.org/docs/history.html 35Édipo Daniel Aragão - Maven Básico
  • 36. Verificando o Java 1. java -version java version "1.7.0_71" Java(TM) SE Runtime Environment (build 1.7.0_71-b14) Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode) 36Édipo Daniel Aragão - Maven Básico
  • 37. Como faço isso?! ~/Downloads$ sudo cp apache-maven-3.3.9-bin.tar.gz /opt/ ~/Downloads$ cd /opt/ /opt$ sudo tar -xzf apache-maven-3.3.9-bin.tar.gz /opt$ sudo rm apache-maven-3.3.9-bin.tar.gz /opt$ sudo ln -s apache-maven-3.3.9 maven /opt$ export PATH=/opt/maven/bin:${PATH} 37Édipo Daniel Aragão - Maven Básico
  • 38. Funciona somente na Sessão ~/Downloads$ sudo cp apache-maven-3.3.9-bin.tar.gz /opt/ ~/Downloads$ cd /opt/ /opt$ sudo tar -xzf apache-maven-3.3.9-bin.tar.gz /opt$ sudo rm apache-maven-3.3.9-bin.tar.gz /opt$ sudo ln -s apache-maven-3.3.9 maven /opt$ export PATH=/opt/maven/bin:${PATH} 38Édipo Daniel Aragão - Maven Básico
  • 39. Por Usuário ~/Downloads$ sudo cp apache-maven-3.3.9-bin.tar.gz /opt/ ~/Downloads$ cd /opt/ /opt$ sudo tar -xzf apache-maven-3.3.9-bin.tar.gz /opt$ sudo rm apache-maven-3.3.9-bin.tar.gz /opt$ sudo ln -s apache-maven-3.3.9 maven /opt$ sudo gedit ~/.profile Adicione as seguintes linhas ao fim do arquivo: # Maven export PATH=/opt/maven/bin:${PATH} Neste caso utilizamos o .profile, mas eventualmente poderia ser .bash_login. 39Édipo Daniel Aragão - Maven Básico
  • 40. Para Todos Usuários ~/Downloads$ sudo cp apache-maven-3.3.9-bin.tar.gz /opt/ ~/Downloads$ cd /opt/ /opt$ sudo tar -xzf apache-maven-3.3.9-bin.tar.gz /opt$ sudo rm apache-maven-3.3.9-bin.tar.gz /opt$ sudo ln -s apache-maven-3.3.9 maven /opt$ sudo gedit /etc/environment Adicione no final desta linha: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin :/usr/games:/usr/local/games:/opt/maven/bin" 40Édipo Daniel Aragão - Maven Básico
  • 41. Mas porquê no /opt/? 1. Você sabe porquê é instalado no opt? 2. Você pode checar com o comando: a. $ man hier 3. Ou no seguintes sites: a. http://www.pathname.com/fhs/ b. http://www.pathname.com/fhs/pub/fhs-2.3.pdf 4. Em geral são instalados pacotes opcionais, fora dos pacotes padrão do Sistema Operacional. 41Édipo Daniel Aragão - Maven Básico
  • 42. Vamos instalar no Windows... 1. Extrair o conteúdo em c:Program Filesapache-maven-3.3.x; 2. Adicionar através do Painel de Controle nas variáveis de ambiente; 42Édipo Daniel Aragão - Maven Básico
  • 43. Testando ~$ mvn -v Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T14:41:47-02:00) Maven home: /opt/maven Java version: 1.8.0_91, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "4.4.0-28-generic", arch: "amd64", family: "unix" 43Édipo Daniel Aragão - Maven Básico
  • 44. Detalhes da Instalação 1. A instalação é bastante pequena, e o Maven irá baixar plugins e dependências na primeira execução (sob demanda). /opt$ ls apache-maven-3.3.9 -p1 bin/ boot/ conf/ lib/ LICENSE NOTICE 44Édipo Daniel Aragão - Maven Básico
  • 45. Detalhes da Instalação 1. LICENSE.txt contém a licença de software para o Apache Maven; 2. NOTICE.txt contém alguns avisos e atribuições necessárias (bibliotecas Maven que depende); 3. README.txt contém algumas instruções de instalação. 4. bin/ contém o script mvn que executa Maven. 5. boot/ contém um arquivo JAR (classwords - 1.1.jar ), que é responsável pela criação do Classe Loader em que Maven é executado. 6. conf/ contém um settings.xml global que pode ser utilizado para personalizar o comportamento da instalação do Maven. 7. Evite mudar esse arquivo, procure usar ~/.m2. 8. lib/ contém um jar que é o núcleo de Maven. 45Édipo Daniel Aragão - Maven Básico
  • 46. Configurações Específicas de Usuário e Repositório Ao utilizar Maven ele irá criar um diretório ~/.m2 contendo: 1. ~/.m2/settings.xml: Configurações específicas do usuário: a. autenticação b. repositórios c. etc. 2. ~/.m2/repository/: Repositório local do Maven, onde ele armazena cópias de dependências. 46Édipo Daniel Aragão - Maven Básico
  • 47. Configurações Específicas de Usuário e Repositório Para atualizar o Maven basta: 1. Remover a versão atual; 2. Substituir por uma versão mais nova; 3. Recriar o link simbólico nos Unix based systems; 4. No caso Microsoft, é preciso atualizar as variáveis de ambiente. Para remoção basta remover 1. Remover a versão atual; 2. Remover eventuais links e paths nos Unix based systems; 3. Remover das variáveis de ambiente no caso Microsoft. 47Édipo Daniel Aragão - Maven Básico
  • 48. Licença O Maven está sob a Licença Apache. Permite: 1. Fazer download livremente, para propósitos pessoais e comerciais. 2. Usar e distribuir em pacotes que você criar. Não Permite: 1. Redistribuir qualquer software de origem da Apache sem a devida atribuição ; 2. Utilizar marcas de propriedade da Apache Software Foundation de forma que possa indicar ou sugerir que a Fundação apoia a sua distribuição; 3. Utilizar marcas de propriedade do Apache Software Foundation de forma que possa indicar ou sugerir que você criou o software Apache em questão. Requer: 1. Incluir uma cópia da licença em qualquer redistribuição que você pode fazer; 2. Fornecer atribuição clara à Apache Software Foundation para quaisquer distribuições que incluem seus programas. 48Édipo Daniel Aragão - Maven Básico
  • 49. Será que isso funciona?! 1. Vamos fazer o build do pom mínimo para garantir que ele funciona! 49Édipo Daniel Aragão - Maven Básico