SlideShare uma empresa Scribd logo
APACHE MAVEN
Introdução, conceitos e prática.
Rafael Tavares - IFPB
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]
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].
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
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;
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.
POM - Project Object Model
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;
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.
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.
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:
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
Repositórios
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.
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:
Referências
• Aula do Prof. Ricardo Job – IFPB, Campus Cajazeiras (2015)
• http://diogodmoreira.com/blog/2014/02/04/tutorial-maven-
intro.html
• http://imasters.com.br/artigo/12336/java/dez-motivos-para-
voce-usar-maven
• https://maven.apache.org/index.html
• https://pt.wikipedia.org/wiki/Apache_Maven

Mais conteúdo relacionado

Mais procurados

Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
Elenilson Vieira
 

Mais procurados (20)

[OFICINA JAVA] - Conhecendo Java
[OFICINA JAVA] - Conhecendo Java[OFICINA JAVA] - Conhecendo Java
[OFICINA JAVA] - Conhecendo Java
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
 
Maven em 10 minutos
Maven em 10 minutosMaven em 10 minutos
Maven em 10 minutos
 
O Futuro do ASP.NET
O Futuro do ASP.NETO Futuro do ASP.NET
O Futuro do ASP.NET
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring Framework
 
TDCPOA2018 - Trilha Python - Testes de Performance com Locust
TDCPOA2018 - Trilha Python - Testes de Performance com LocustTDCPOA2018 - Trilha Python - Testes de Performance com Locust
TDCPOA2018 - Trilha Python - Testes de Performance com Locust
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot framework
 
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
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
 
Webpack
Webpack Webpack
Webpack
 
#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?
#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?
#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
 
Spring: uma introdução prática
Spring: uma introdução práticaSpring: uma introdução prática
Spring: uma introdução prática
 
Infrastructure Testing
Infrastructure TestingInfrastructure Testing
Infrastructure Testing
 
Arquitetura do Framework Spring
Arquitetura do Framework SpringArquitetura do Framework Spring
Arquitetura do Framework Spring
 
Maven 3, Sonar e Hudson
Maven 3, Sonar e HudsonMaven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
 
Robot Framework no DevTests #34
Robot Framework no DevTests #34Robot Framework no DevTests #34
Robot Framework no DevTests #34
 
Evoluindo bancos de dados com Flyway
Evoluindo bancos de dados com FlywayEvoluindo bancos de dados com Flyway
Evoluindo bancos de dados com Flyway
 
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
 
O framework spring
O framework springO framework spring
O framework spring
 

Semelhante a Apache maven

Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & HudsonSuporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Ricardo Ferreira
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Allyson Barros
 

Semelhante a Apache maven (20)

Aula maven
Aula   mavenAula   maven
Aula maven
 
Maven introdução Muito Rápida
Maven introdução Muito RápidaMaven introdução Muito Rápida
Maven introdução Muito Rápida
 
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
 
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
 
Tutorial de instalação do Maven
Tutorial de instalação do MavenTutorial de instalação do Maven
Tutorial de instalação do Maven
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: Introdução
 
Apresentação maven
Apresentação mavenApresentação maven
Apresentação maven
 
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & HudsonSuporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
 
Introdução ao maven
Introdução ao mavenIntrodução ao maven
Introdução ao maven
 
Maven
MavenMaven
Maven
 
Projetos Java com Maven
Projetos Java com MavenProjetos Java com Maven
Projetos Java com Maven
 
Maven - Aula 01
Maven - Aula 01Maven - Aula 01
Maven - Aula 01
 
Plugin Maven no Eclipse
Plugin Maven no EclipsePlugin Maven no Eclipse
Plugin Maven no Eclipse
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Introdução ao Maven
Introdução ao MavenIntrodução ao Maven
Introdução ao Maven
 
Apache e Java
Apache e JavaApache e Java
Apache e Java
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasDevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
 
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
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 

Apache maven

  • 1. APACHE MAVEN Introdução, conceitos e prática. Rafael Tavares - IFPB
  • 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.
  • 7. POM - Project Object Model
  • 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:
  • 16. Referências • Aula do Prof. Ricardo Job – IFPB, Campus Cajazeiras (2015) • http://diogodmoreira.com/blog/2014/02/04/tutorial-maven- intro.html • http://imasters.com.br/artigo/12336/java/dez-motivos-para- voce-usar-maven • https://maven.apache.org/index.html • https://pt.wikipedia.org/wiki/Apache_Maven