SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
Maven - Curso Básico
Aula 03 - POM - Parte 2
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;
2Édipo Daniel Aragão - Maven Básico
Frase Motivacional
3
“Se quiser derrubar uma árvore na metade do tempo, passe o dobro do tempo
amolando o machado.” - Provérbio Chinês
Édipo Daniel Aragão - Maven Básico
Project Object Model (POM)
O POM é onde um projeto:
1. Tem sua identidade definida;
2. Tem sua estrutura declarada;
3. Tem o build é configurado;
4. É relacionado a outros;
5. Define suas dependências.
O POM define um projeto Maven! É o mapa do projeto!
O POM é declarativo! Descritivo!
4Édipo Daniel Aragão - Maven Básico
Sintaxe do POM
5
O uso do POM te obriga a poucas coisas:
1. Para um projeto você terá um pom.xml;
2. Este pom.xml é definido na base do projeto (raiz do do projeto);
3. Ele é único no contexto daquele projeto;
4. Sub-módulos podem conter seus próprios pom.xml.
Édipo Daniel Aragão - Maven Básico
Versões - Meu Projeto
6
1. Qual versão é mais nova?
a. 1.0.1b
b. 1.2.0b
Édipo Daniel Aragão - Maven Básico
Versões - Meu Projeto
7
1. Seguem o seguinte formato:
.
2. Exemplos:
a. 1.3.5 → major.minor.incremental
b. 5 → major
c. 1.3-beta-01 → major.minor-qualifier
Édipo Daniel Aragão - Maven Básico
Versões - Meu Projeto
8
1. Usada para agrupar e ordenar as releases.
2. Os valores major, minor e incremental são separados por ".".
a. São comparados como números;
3. O qualifier é separado por "-".
a. É tratado como String.
b. Usado para definição de milestones (alpha-01, beta-01, etc.)
Édipo Daniel Aragão - Maven Básico
Versões - Meu Projeto
9
1. Atenção, se não seguir o padrão:
a. "1.0.1b" é uma versão "mais nova" que "1.2.0b";
b. "1.0.1-b" é uma versão "mais antiga" que "1.2.0-b".
2. Atenção com qualifiers:
a. "1.0.1-alpha-2" é uma versão mais nova que "1.0.1-alpha-10";
b. Solução: "1.0.1-alpha-02";
Édipo Daniel Aragão - Maven Básico
Discussão!??
10
1. Existe alguma estratégia de versões no seu projeto?
2. Você sabe o que cada parte corresponde numa versão?
3. Qual a proposta de versão mais lembrada no Brasil?
Versão
Brasileira
Édipo Daniel Aragão - Maven Básico
SNAPSHOT
11
1. SNAPSHOT é um qualificador adicional que indica que o projeto está sob
desenvolvimento;
2. Quando feito um install desse projeto ele expande a versão como um
timestamp:
a. Exemplo: →
3. O Maven irá sempre checar se há uma versão mais nova no repositório;
4. Lembre-se SNAPSHOTS não são estão ativadas por padrão (maven não
buscará no repositório remoto);
5. Seu projeto nunca deve ser encerrado dependendo de um SNAPSHOT;
6. SNAPSHOTs são somente para desenvolvimento!
Édipo Daniel Aragão - Maven Básico
Properties
12
1. Esta é a sintaxe para usar properties:
2. Quando o Maven lê o POM ele substitui as properties.
3. Existem algumas variáveis implícitas que podem ser úteis:
a. env:
i. O env expõe variáveis de ambiente, exemplo caso tenha ${PATH} no
seu terminal definido, poderia usar:
Édipo Daniel Aragão - Maven Básico
Properties
13
1. Existem algumas variáveis implícitas que podem ser úteis:
a. project:
i. O project expõe variáveis do pom, por exemplo:
b. settings:
i. O settings expõe variáveis do Maven, settings.xml.
Por exemplo:
Recupera o valor do elemento offline do arquivo ~/.m2/settings.xml.
Édipo Daniel Aragão - Maven Básico
Properties
14
1. Exemplo:
Édipo Daniel Aragão - Maven Básico
Dependências
15Édipo Daniel Aragão - Maven Básico
Dependências
16
1. O Maven pode gerenciar dependências internas e externas.
2. Algumas dependência externas de um projeto poderiam ser:
a. Jasper Reports;
b. LogBack;
c. Spring Framework;
d. Hibernate;
e. etc.
Édipo Daniel Aragão - Maven Básico
Dependências
17
1. O Maven pode gerenciar dependências internas e externas.
2. Algumas dependências internas de um projeto poderiam ser:
a. meu-projeto-services;
b. meu-projeto-data;
c. meu-projeto-api;
d. etc.
Édipo Daniel Aragão - Maven Básico
Dependências
18Édipo Daniel Aragão - Maven Básico
Dependências - Escopo
19
1. Temos 5 tipos de escopos para dependências no Maven.
2. O scope controla qual dependência estará disponível em cada classpath e
quais são incluídas no artefato.
3. Escopos:
a. compile;
b. provided;
c. runtime;
d. test;
e. system.
Édipo Daniel Aragão - Maven Básico
Dependências - Escopo - compile
20
1. É o escopo default, se o escopo não for definido. Este tipo de escopo inclui a
dependência em todos os classpaths, que implica que, elas vão ser
empacotadas!
Édipo Daniel Aragão - Maven Básico
Dependências - Escopo - provided
21
1. Este tipo de escopo inclui a dependência na hora de compilação (no classpath
de compilação), mas não a inclui no pacote. Ela será provida pela JDK, pelo
Servidor, etc. Por exemplo a Servlet API, não tem sentido estar no seu pacote
war. Ela será oferecida, por exemplo, pelo Tomcat.
Édipo Daniel Aragão - Maven Básico
Dependências - Escopo - runtime
22
1. Este tipo de escopo indica que a dependência é necessária para executar e
testar o sistema, mas ela não entra no classpath de compilação. Exemplo, um
JDBC driver, você só usará a API em desenvolvimento, e o driver na execução.
Édipo Daniel Aragão - Maven Básico
Dependências - Escopo - test
23
1. Este tipo de escopo indica que a dependência somente será utilizada na
compilação e na fase de execução dos testes.
Édipo Daniel Aragão - Maven Básico
Dependências - Escopo - system
24
1. Não recomendada! Este escopo específica um path no sistema local para o
artefato. A dependência será procurada (localmente), o Maven não buscará no
repositório.
Édipo Daniel Aragão - Maven Básico
Continua...
25Édipo Daniel Aragão - Maven Básico

Mais conteúdo relacionado

Mais procurados

Apresentação maven
Apresentação mavenApresentação maven
Apresentação mavenAndré Justi
 
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
 
Simtecce 2011 Integracao Continua
Simtecce 2011 Integracao ContinuaSimtecce 2011 Integracao Continua
Simtecce 2011 Integracao ContinuaPwC
 
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
 
Spring: uma introdução prática
Spring: uma introdução práticaSpring: uma introdução prática
Spring: uma introdução práticaJosé Barros
 
Testes Funcionais com Selenium
Testes Funcionais com Selenium Testes Funcionais com Selenium
Testes Funcionais com Selenium Mayron Cachina
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoiMasters
 
JBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 FlorianópolisJBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 FlorianópolisGeorge Gastaldi
 
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
 
O framework spring
O framework springO framework spring
O framework springBruno Catão
 

Mais procurados (20)

Apresentação maven
Apresentação mavenApresentação maven
Apresentação maven
 
Aula maven
Aula   mavenAula   maven
Aula maven
 
Maven em 10 minutos
Maven em 10 minutosMaven em 10 minutos
Maven em 10 minutos
 
Apresentação maven
Apresentação mavenApresentação maven
Apresentação maven
 
Pyramid - O Framework Web para Todos
Pyramid - O Framework Web para TodosPyramid - O Framework Web para Todos
Pyramid - O Framework Web para Todos
 
Maven
MavenMaven
Maven
 
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: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: Introdução
 
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?
 
Simtecce 2011 Integracao Continua
Simtecce 2011 Integracao ContinuaSimtecce 2011 Integracao Continua
Simtecce 2011 Integracao Continua
 
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
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
 
Maven 2
Maven 2Maven 2
Maven 2
 
Spring: uma introdução prática
Spring: uma introdução práticaSpring: uma introdução prática
Spring: uma introdução prática
 
Testes Funcionais com Selenium
Testes Funcionais com Selenium Testes Funcionais com Selenium
Testes Funcionais com Selenium
 
Maverick v1.0
Maverick v1.0Maverick v1.0
Maverick v1.0
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimento
 
JBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 FlorianópolisJBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 Florianópolis
 
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
 
O framework spring
O framework springO framework spring
O framework spring
 

Semelhante a Maven - Aula 03

Aula 1 - Java - Prof.ª Cristiane Fidelix
Aula 1 - Java - Prof.ª Cristiane FidelixAula 1 - Java - Prof.ª Cristiane Fidelix
Aula 1 - Java - Prof.ª Cristiane FidelixCris Fidelix
 
Aula1- Java PRof.ª Cristiane Fidelix
Aula1- Java PRof.ª Cristiane FidelixAula1- Java PRof.ª Cristiane Fidelix
Aula1- Java PRof.ª Cristiane FidelixCris Fidelix
 
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
 
Projetos Java com Maven
Projetos Java com MavenProjetos Java com Maven
Projetos Java com MavenEdgar Dantas
 
Poo slides01
Poo slides01Poo slides01
Poo slides01jmtofoli
 
LuaRocks - palestra Hack'n'Rio 2011
LuaRocks - palestra Hack'n'Rio 2011LuaRocks - palestra Hack'n'Rio 2011
LuaRocks - palestra Hack'n'Rio 2011Hisham Muhammad
 
Estamos trabalhando melhor com dependências e ambientes usando containers?
Estamos trabalhando melhor  com dependências e ambientes  usando containers?Estamos trabalhando melhor  com dependências e ambientes  usando containers?
Estamos trabalhando melhor com dependências e ambientes usando containers?Isaac de Souza
 
Web Training Aula 03: Introduction to Laravel
Web Training Aula 03: Introduction to LaravelWeb Training Aula 03: Introduction to Laravel
Web Training Aula 03: Introduction to LaravelMozDevz
 
A arquitetura modular do Java 9
A arquitetura modular do Java 9A arquitetura modular do Java 9
A arquitetura modular do Java 9Helder da Rocha
 
X Bemobi Tech Talk - Maven
X Bemobi Tech Talk - MavenX Bemobi Tech Talk - Maven
X Bemobi Tech Talk - MavenDiego Magalhães
 

Semelhante a Maven - Aula 03 (20)

01 java fundamentos
01 java fundamentos01 java fundamentos
01 java fundamentos
 
Aula 1 - Java - Prof.ª Cristiane Fidelix
Aula 1 - Java - Prof.ª Cristiane FidelixAula 1 - Java - Prof.ª Cristiane Fidelix
Aula 1 - Java - Prof.ª Cristiane Fidelix
 
Aula1- Java PRof.ª Cristiane Fidelix
Aula1- Java PRof.ª Cristiane FidelixAula1- Java PRof.ª Cristiane Fidelix
Aula1- Java PRof.ª Cristiane Fidelix
 
Apache maven
Apache mavenApache maven
Apache maven
 
Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018
 
01 introducao ao java
01   introducao ao java01   introducao ao java
01 introducao ao java
 
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
 
Projetos Java com Maven
Projetos Java com MavenProjetos Java com Maven
Projetos Java com Maven
 
Java20141215 17[1]
Java20141215 17[1]Java20141215 17[1]
Java20141215 17[1]
 
Java1
Java1Java1
Java1
 
Poo slides01
Poo slides01Poo slides01
Poo slides01
 
LuaRocks - palestra Hack'n'Rio 2011
LuaRocks - palestra Hack'n'Rio 2011LuaRocks - palestra Hack'n'Rio 2011
LuaRocks - palestra Hack'n'Rio 2011
 
Estamos trabalhando melhor com dependências e ambientes usando containers?
Estamos trabalhando melhor  com dependências e ambientes  usando containers?Estamos trabalhando melhor  com dependências e ambientes  usando containers?
Estamos trabalhando melhor com dependências e ambientes usando containers?
 
Aula1
Aula1Aula1
Aula1
 
Plugin Maven no Eclipse
Plugin Maven no EclipsePlugin Maven no Eclipse
Plugin Maven no Eclipse
 
Web Training Aula 03: Introduction to Laravel
Web Training Aula 03: Introduction to LaravelWeb Training Aula 03: Introduction to Laravel
Web Training Aula 03: Introduction to Laravel
 
Mastering Laravel
Mastering LaravelMastering Laravel
Mastering Laravel
 
A arquitetura modular do Java 9
A arquitetura modular do Java 9A arquitetura modular do Java 9
A arquitetura modular do Java 9
 
Precisamos falar sobre Gradle
Precisamos falar sobre GradlePrecisamos falar sobre Gradle
Precisamos falar sobre Gradle
 
X Bemobi Tech Talk - Maven
X Bemobi Tech Talk - MavenX Bemobi Tech Talk - Maven
X Bemobi Tech Talk - Maven
 

Maven - Aula 03

  • 1. Maven - Curso Básico Aula 03 - POM - Parte 2
  • 2. 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; 2Édipo Daniel Aragão - Maven Básico
  • 3. Frase Motivacional 3 “Se quiser derrubar uma árvore na metade do tempo, passe o dobro do tempo amolando o machado.” - Provérbio Chinês Édipo Daniel Aragão - Maven Básico
  • 4. Project Object Model (POM) O POM é onde um projeto: 1. Tem sua identidade definida; 2. Tem sua estrutura declarada; 3. Tem o build é configurado; 4. É relacionado a outros; 5. Define suas dependências. O POM define um projeto Maven! É o mapa do projeto! O POM é declarativo! Descritivo! 4Édipo Daniel Aragão - Maven Básico
  • 5. Sintaxe do POM 5 O uso do POM te obriga a poucas coisas: 1. Para um projeto você terá um pom.xml; 2. Este pom.xml é definido na base do projeto (raiz do do projeto); 3. Ele é único no contexto daquele projeto; 4. Sub-módulos podem conter seus próprios pom.xml. Édipo Daniel Aragão - Maven Básico
  • 6. Versões - Meu Projeto 6 1. Qual versão é mais nova? a. 1.0.1b b. 1.2.0b Édipo Daniel Aragão - Maven Básico
  • 7. Versões - Meu Projeto 7 1. Seguem o seguinte formato: . 2. Exemplos: a. 1.3.5 → major.minor.incremental b. 5 → major c. 1.3-beta-01 → major.minor-qualifier Édipo Daniel Aragão - Maven Básico
  • 8. Versões - Meu Projeto 8 1. Usada para agrupar e ordenar as releases. 2. Os valores major, minor e incremental são separados por ".". a. São comparados como números; 3. O qualifier é separado por "-". a. É tratado como String. b. Usado para definição de milestones (alpha-01, beta-01, etc.) Édipo Daniel Aragão - Maven Básico
  • 9. Versões - Meu Projeto 9 1. Atenção, se não seguir o padrão: a. "1.0.1b" é uma versão "mais nova" que "1.2.0b"; b. "1.0.1-b" é uma versão "mais antiga" que "1.2.0-b". 2. Atenção com qualifiers: a. "1.0.1-alpha-2" é uma versão mais nova que "1.0.1-alpha-10"; b. Solução: "1.0.1-alpha-02"; Édipo Daniel Aragão - Maven Básico
  • 10. Discussão!?? 10 1. Existe alguma estratégia de versões no seu projeto? 2. Você sabe o que cada parte corresponde numa versão? 3. Qual a proposta de versão mais lembrada no Brasil? Versão Brasileira Édipo Daniel Aragão - Maven Básico
  • 11. SNAPSHOT 11 1. SNAPSHOT é um qualificador adicional que indica que o projeto está sob desenvolvimento; 2. Quando feito um install desse projeto ele expande a versão como um timestamp: a. Exemplo: → 3. O Maven irá sempre checar se há uma versão mais nova no repositório; 4. Lembre-se SNAPSHOTS não são estão ativadas por padrão (maven não buscará no repositório remoto); 5. Seu projeto nunca deve ser encerrado dependendo de um SNAPSHOT; 6. SNAPSHOTs são somente para desenvolvimento! Édipo Daniel Aragão - Maven Básico
  • 12. Properties 12 1. Esta é a sintaxe para usar properties: 2. Quando o Maven lê o POM ele substitui as properties. 3. Existem algumas variáveis implícitas que podem ser úteis: a. env: i. O env expõe variáveis de ambiente, exemplo caso tenha ${PATH} no seu terminal definido, poderia usar: Édipo Daniel Aragão - Maven Básico
  • 13. Properties 13 1. Existem algumas variáveis implícitas que podem ser úteis: a. project: i. O project expõe variáveis do pom, por exemplo: b. settings: i. O settings expõe variáveis do Maven, settings.xml. Por exemplo: Recupera o valor do elemento offline do arquivo ~/.m2/settings.xml. Édipo Daniel Aragão - Maven Básico
  • 14. Properties 14 1. Exemplo: Édipo Daniel Aragão - Maven Básico
  • 16. Dependências 16 1. O Maven pode gerenciar dependências internas e externas. 2. Algumas dependência externas de um projeto poderiam ser: a. Jasper Reports; b. LogBack; c. Spring Framework; d. Hibernate; e. etc. Édipo Daniel Aragão - Maven Básico
  • 17. Dependências 17 1. O Maven pode gerenciar dependências internas e externas. 2. Algumas dependências internas de um projeto poderiam ser: a. meu-projeto-services; b. meu-projeto-data; c. meu-projeto-api; d. etc. Édipo Daniel Aragão - Maven Básico
  • 19. Dependências - Escopo 19 1. Temos 5 tipos de escopos para dependências no Maven. 2. O scope controla qual dependência estará disponível em cada classpath e quais são incluídas no artefato. 3. Escopos: a. compile; b. provided; c. runtime; d. test; e. system. Édipo Daniel Aragão - Maven Básico
  • 20. Dependências - Escopo - compile 20 1. É o escopo default, se o escopo não for definido. Este tipo de escopo inclui a dependência em todos os classpaths, que implica que, elas vão ser empacotadas! Édipo Daniel Aragão - Maven Básico
  • 21. Dependências - Escopo - provided 21 1. Este tipo de escopo inclui a dependência na hora de compilação (no classpath de compilação), mas não a inclui no pacote. Ela será provida pela JDK, pelo Servidor, etc. Por exemplo a Servlet API, não tem sentido estar no seu pacote war. Ela será oferecida, por exemplo, pelo Tomcat. Édipo Daniel Aragão - Maven Básico
  • 22. Dependências - Escopo - runtime 22 1. Este tipo de escopo indica que a dependência é necessária para executar e testar o sistema, mas ela não entra no classpath de compilação. Exemplo, um JDBC driver, você só usará a API em desenvolvimento, e o driver na execução. Édipo Daniel Aragão - Maven Básico
  • 23. Dependências - Escopo - test 23 1. Este tipo de escopo indica que a dependência somente será utilizada na compilação e na fase de execução dos testes. Édipo Daniel Aragão - Maven Básico
  • 24. Dependências - Escopo - system 24 1. Não recomendada! Este escopo específica um path no sistema local para o artefato. A dependência será procurada (localmente), o Maven não buscará no repositório. Édipo Daniel Aragão - Maven Básico