SlideShare uma empresa Scribd logo
Maven 2.0

Gerenciando os seus projetos
     com o Maven 2.0
           2005
Maurício Linhares

   http://maujr.org/
Qual o problema?


Fazer o build dos projetos deve ser
simples, você não deve passar horas
tentando gerar um artefato a partir do
            código fonte.
Jorge            Thiago




Trabalham em partes diferentes
    de um mesmo projeto
•  Usa o NetBeans 5.0
•  Monta os seus builds com   Jorge
   o Ant
•  Usa a estrutura de
   diretórios comum do
   NetBeans
•  Não usa um sistema de
   controle de versão
•  Usa o Eclipse 3.1 com o
   Web Tools Platform (WTP)        Thiago
•  Faz os builds dentro do
   Eclipse, com o WTP
•  Usa a estrutura de diretórios
   do WTP
•  Também não usa um
   sistema de controle de
   versão
Um belo dia...

          ... Jorge fica doente

   E surge um bug no seu
   projeto que precisa ser
          resolvido
Thiago
Quem é que
  tem que
 resolver?
Problemas?
•  Thiago nunca usou o NetBeans
•  Thiago nem imagina como é que se usa o
   Ant
•  Não é possível importar o projeto de Jorge
   para o Eclipse, os diretórios não batem
Thiago
Alguns dias de
   trabalho
   depois...
Qual a moral da história?


 Os projetos devem ser
     padronizados!
Assuntos
•    Como surgiu o Maven?
•    O que é o Maven?
•    Como o Maven funciona?
•    Padronizando os projetos
•    Maven e os seus plugins
Como surgiu o Maven?
•  Necessidade de padronização dos sub-
   projetos dentro do projeto Jakarta Turbine
•  Era necessário evitar o envio de
   arquivos .jar para o controle de versão
•  Era necessário facilitar o entendimento de
   cada sub-projeto no sistema
O que é o Maven?
•    Gerenciador de builds
•    Gerenciador de dependências
•    Gerador de documentação
•    Provedor de ferramentas para a avaliação
     da qualidade do projeto
Objetivos do Maven (1-2)
•  Tornar o processo de desenvolvimento visível e
   transparente
•  Prover uma maneira simples de analisar o status
   de um projeto
•  Diminuir o tempo de adequação de novos
   desenvolvedores
•  Reunir ferramentas necessárias uniformemente
Objetivos do Maven (2-2)
•  Evitar configurações inconsistentes
•  Prover uma estrutura comum para todos
   os projetos
•  Foco no desenvolvimento das aplicações,
   não no build dos projetos
Como o Maven funciona?
•  Os projetos são descritos usando o
   Project Object Model (POM)
•  Os plugins são invocados e executados
   sobre o projeto em questão através das
   informações do POM
O que fica no POM?
•    Desenvolvedores
•    Dependências
•    Configuração de plugins
•    Controle de versão
•    Repositórios...
Exemplo de POM
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.codehaus.cargo</groupId>
  <artifactId>cargo-core-api-container</artifactId>
  <name>Cargo Core Container API</name>
  <version>0.7-SNAPSHOT</version>
  <packaging>jar</packaging>
  <dependencies/>
  <build/>
</project>
Padronizando o projeto

•  O Maven define uma estrutura de
   diretórios default
•  A estrutura padrão é resultado da
   experiência dos próprios desenvolvedores
   do Maven
•  É possível (mas não é aconselhável)
   configurar uma estrutura de diretórios
   diferente
Estrutura de diretórios
•  src/                   -- pasta raiz
   –  main/               -- tronco principal
          •  java/        -- código fonte Java
          •  resources/   -- recursos (arquivos de configuração, imagens, etc)
          •  webapp/      -- aplicação web Java
   –  test/               -- tronco de testes unitários e de integração
          •  java/        -- código fonte dos testes do JUnit
          •  resources/   -- recursos dos testes
          •  cactus/      -- códigos dos testes de integração do Cactus
   –  site/               -- tronco principal da documentação
Fases de um projeto no Maven

Gerar código inicial            Empacotar

     Compilar               Testes de integração

 Testes unitários                 Instalar


                    Implantar
Repositórios
•  Locais de armazenamento de diversos
   tipos de artefatos
•  Toda a gerencia do repositório é feita pelo
   próprio Maven
•  Não é necessário declarar caminhos
   relativos para os artefatos
Buscando dependências

  Repositório            Repositório
   Remoto                  local




<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate</artifactId>
  <version>3.1.2</version>
</dependency>
Dependências ou artefatos
•  São mantidas nos repositórios (locais ou
   remotos)
•  São transitivas
•  Podem ser atualizadas automaticamente
   pelo Maven
Transitividade das dependências
                               Dependência
•  Não é necessário declarar    declarada
   toda a árvore de
   dependências, o Maven só         A
   precisa saber a
   dependência raiz             B       C


                                        D
Documentação e relatórios
•  Gera um site descritivo do projeto (listas
   de discussão, desenvolvedores,
   dependências)
•  Gera relatórios sobre o projeto (qualidade,
   JavaDoc, arquivos fonte)
O Maven e seus Plugins
•    Meios de extensão para o Maven
•    São buscados nos repositórios disponíveis
•    São configurados dentro do POM
•    Existem mais de 80 plugins oficiais
     catalogados
Configuração de um plugin

<plugins>
  <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
            <source>1.5</source>
            <target>1.5</target>
      </configuration>
  </plugin>
</plugins>
Avaliando a migração para o
           Maven 2.0
•  Quando não existe padronização
•  Quando o padrão é o Ant
•  Quando o padrão é o Maven 1.0
Sem padrão
•  Define um padrão para todos os projetos
•  Facilita a integração e o reconhecimento
   do código
•  Centraliza as informações sobre projetos
   e sub-projetos
Ant como padrão
•  Diminui a quantidade de configuração
   necessária para o build
•  Tasks do Ant podem ser invocados pelo
   Maven
•  Quantidade imensa de plugins prontos
   para ser utilizados
Maven 1.0 como padrão
•  O desenvolvimento do Maven 1.0 está
    congelado
•  Novos plugins e integração com outras
   ferramentas está sendo feito com base no
   Maven 2
Conclusão
O objetivo principal do Maven como ferramenta
é padronizar os projetos, para que eles possam
ser gerenciados e entendidos com mais
facilidade, para que os envolvidos se
preocupem mais com o desenvolvimento e
menos com as configurações
Perguntas?
Referências
•  MASSOL, Vincent; O BRIEN, Timothy.
   Maven: A Developer s Notebook.
   O Reilly, 2005.
•  MASSOL, Vincent. Maven 2.0 – Improve
   your build patterns. Palestra no Javapolis
   2005 – disponível em http://javapolis.com/

Mais conteúdo relacionado

PDF
Apresentação maven
PPTX
Apresentação maven
PPTX
Maven e Nexus. O que são essas ferramentas?
PPTX
Apache maven
PPTX
Maven introdução Muito Rápida
PDF
PDF
UAI Test - Introdução Prática ao Jenkins
PDF
Introdução ao maven
Apresentação maven
Apresentação maven
Maven e Nexus. O que são essas ferramentas?
Apache maven
Maven introdução Muito Rápida
UAI Test - Introdução Prática ao Jenkins
Introdução ao maven

Mais procurados (20)

PPTX
Maven em 10 minutos
ODP
Apresentacao de Introdução ao Apache Maven
PPTX
Automatização de Infraestrutura com Jenkins
PDF
Maven na prática
PDF
Maven: Introdução
PPTX
Maven 3, Sonar e Hudson
PDF
Maven - Aula 01
PDF
Precisamos falar sobre Gradle
PDF
Testes em aplicações JEE: Montando sua infra de testes automatizados
PPTX
Jenkins integrando e estendendo.
PPTX
Jenkins e a Integração Contínua
PDF
A arquitetura modular do Java 9
PPTX
Plugin Maven no Eclipse
PDF
Introdução ao Flyway
PDF
Maven - Aula 05
PDF
Maven - Aula 04
PDF
Jenkins, o CI ao seu dispor
PDF
Integração Continua - Jenkins
PDF
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Maven em 10 minutos
Apresentacao de Introdução ao Apache Maven
Automatização de Infraestrutura com Jenkins
Maven na prática
Maven: Introdução
Maven 3, Sonar e Hudson
Maven - Aula 01
Precisamos falar sobre Gradle
Testes em aplicações JEE: Montando sua infra de testes automatizados
Jenkins integrando e estendendo.
Jenkins e a Integração Contínua
A arquitetura modular do Java 9
Plugin Maven no Eclipse
Introdução ao Flyway
Maven - Aula 05
Maven - Aula 04
Jenkins, o CI ao seu dispor
Integração Continua - Jenkins
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Anúncio

Semelhante a Maven 2 (20)

PPTX
Projetos Java com Maven
PPTX
Introdução a projetos baseados em apache maven
PDF
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT
PDF
Maven - Aula 03
PDF
Simtecce 2011 Integracao Continua
 
ODP
GlassFish e Maven: Java EE sem dor!
PDF
PPTX
Gestão de Projetos: Introdução ao Apache Maven
PPTX
Gestão de Projectos: Apache Maven - Introdução
KEY
Quick intro to Apache Maven
PPTX
Introdução ao Maven
PPTX
Tutorial de instalação do Maven
PDF
Organizando a casa
PDF
Organizandoacasa 120316203302-phpapp02
PDF
Maven Versioning Strategy (VR)
PDF
Framework web 01 - Aula UTFPR 2018
PPT
Maverick v1.0
PPTX
Apache Maven
PPTX
Gestão de Projectos: Apache Maven - Introdução
PPT
X Bemobi Tech Talk - Maven
Projetos Java com Maven
Introdução a projetos baseados em apache maven
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT
Maven - Aula 03
Simtecce 2011 Integracao Continua
 
GlassFish e Maven: Java EE sem dor!
Gestão de Projetos: Introdução ao Apache Maven
Gestão de Projectos: Apache Maven - Introdução
Quick intro to Apache Maven
Introdução ao Maven
Tutorial de instalação do Maven
Organizando a casa
Organizandoacasa 120316203302-phpapp02
Maven Versioning Strategy (VR)
Framework web 01 - Aula UTFPR 2018
Maverick v1.0
Apache Maven
Gestão de Projectos: Apache Maven - Introdução
X Bemobi Tech Talk - Maven
Anúncio

Mais de Maurício Linhares (20)

PPTX
Mercado de TI
PPTX
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
PPTX
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
PDF
Aprendendo ruby
PDF
Curso java 07 - exceções
PDF
Curso java 08 - mais sobre coleções
PDF
Curso java 06 - mais construtores, interfaces e polimorfismo
PDF
Curso java 05 - herança, classes e métodos abstratos
PDF
Curso java 04 - ap is e bibliotecas
PPTX
Curso java 01 - molhando os pés com java
PDF
Curso java 02 - variáveis
PDF
Curso java 03 - métodos e parâmetros
PDF
Extreme programming
PDF
Feature Driven Development
PDF
Migrando pra Scala
PPTX
Outsourcing e trabalho remoto para a nuvem
PDF
Mercado hoje
PDF
Análise de sistemas oo 1
PDF
Revisão html e java script
PPTX
Aulas de Java Avançado 2- Faculdade iDez 2010
Mercado de TI
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Aprendendo ruby
Curso java 07 - exceções
Curso java 08 - mais sobre coleções
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso java 05 - herança, classes e métodos abstratos
Curso java 04 - ap is e bibliotecas
Curso java 01 - molhando os pés com java
Curso java 02 - variáveis
Curso java 03 - métodos e parâmetros
Extreme programming
Feature Driven Development
Migrando pra Scala
Outsourcing e trabalho remoto para a nuvem
Mercado hoje
Análise de sistemas oo 1
Revisão html e java script
Aulas de Java Avançado 2- Faculdade iDez 2010

Maven 2

  • 1. Maven 2.0 Gerenciando os seus projetos com o Maven 2.0 2005
  • 2. Maurício Linhares http://maujr.org/
  • 3. Qual o problema? Fazer o build dos projetos deve ser simples, você não deve passar horas tentando gerar um artefato a partir do código fonte.
  • 4. Jorge Thiago Trabalham em partes diferentes de um mesmo projeto
  • 5. •  Usa o NetBeans 5.0 •  Monta os seus builds com Jorge o Ant •  Usa a estrutura de diretórios comum do NetBeans •  Não usa um sistema de controle de versão
  • 6. •  Usa o Eclipse 3.1 com o Web Tools Platform (WTP) Thiago •  Faz os builds dentro do Eclipse, com o WTP •  Usa a estrutura de diretórios do WTP •  Também não usa um sistema de controle de versão
  • 7. Um belo dia... ... Jorge fica doente E surge um bug no seu projeto que precisa ser resolvido
  • 8. Thiago Quem é que tem que resolver?
  • 9. Problemas? •  Thiago nunca usou o NetBeans •  Thiago nem imagina como é que se usa o Ant •  Não é possível importar o projeto de Jorge para o Eclipse, os diretórios não batem
  • 10. Thiago Alguns dias de trabalho depois...
  • 11. Qual a moral da história? Os projetos devem ser padronizados!
  • 12. Assuntos •  Como surgiu o Maven? •  O que é o Maven? •  Como o Maven funciona? •  Padronizando os projetos •  Maven e os seus plugins
  • 13. Como surgiu o Maven? •  Necessidade de padronização dos sub- projetos dentro do projeto Jakarta Turbine •  Era necessário evitar o envio de arquivos .jar para o controle de versão •  Era necessário facilitar o entendimento de cada sub-projeto no sistema
  • 14. O que é o Maven? •  Gerenciador de builds •  Gerenciador de dependências •  Gerador de documentação •  Provedor de ferramentas para a avaliação da qualidade do projeto
  • 15. Objetivos do Maven (1-2) •  Tornar o processo de desenvolvimento visível e transparente •  Prover uma maneira simples de analisar o status de um projeto •  Diminuir o tempo de adequação de novos desenvolvedores •  Reunir ferramentas necessárias uniformemente
  • 16. Objetivos do Maven (2-2) •  Evitar configurações inconsistentes •  Prover uma estrutura comum para todos os projetos •  Foco no desenvolvimento das aplicações, não no build dos projetos
  • 17. Como o Maven funciona? •  Os projetos são descritos usando o Project Object Model (POM) •  Os plugins são invocados e executados sobre o projeto em questão através das informações do POM
  • 18. O que fica no POM? •  Desenvolvedores •  Dependências •  Configuração de plugins •  Controle de versão •  Repositórios...
  • 19. Exemplo de POM <project> <modelVersion>4.0.0</modelVersion> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-core-api-container</artifactId> <name>Cargo Core Container API</name> <version>0.7-SNAPSHOT</version> <packaging>jar</packaging> <dependencies/> <build/> </project>
  • 20. Padronizando o projeto •  O Maven define uma estrutura de diretórios default •  A estrutura padrão é resultado da experiência dos próprios desenvolvedores do Maven •  É possível (mas não é aconselhável) configurar uma estrutura de diretórios diferente
  • 21. Estrutura de diretórios •  src/ -- pasta raiz –  main/ -- tronco principal •  java/ -- código fonte Java •  resources/ -- recursos (arquivos de configuração, imagens, etc) •  webapp/ -- aplicação web Java –  test/ -- tronco de testes unitários e de integração •  java/ -- código fonte dos testes do JUnit •  resources/ -- recursos dos testes •  cactus/ -- códigos dos testes de integração do Cactus –  site/ -- tronco principal da documentação
  • 22. Fases de um projeto no Maven Gerar código inicial Empacotar Compilar Testes de integração Testes unitários Instalar Implantar
  • 23. Repositórios •  Locais de armazenamento de diversos tipos de artefatos •  Toda a gerencia do repositório é feita pelo próprio Maven •  Não é necessário declarar caminhos relativos para os artefatos
  • 24. Buscando dependências Repositório Repositório Remoto local <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate</artifactId> <version>3.1.2</version> </dependency>
  • 25. Dependências ou artefatos •  São mantidas nos repositórios (locais ou remotos) •  São transitivas •  Podem ser atualizadas automaticamente pelo Maven
  • 26. Transitividade das dependências Dependência •  Não é necessário declarar declarada toda a árvore de dependências, o Maven só A precisa saber a dependência raiz B C D
  • 27. Documentação e relatórios •  Gera um site descritivo do projeto (listas de discussão, desenvolvedores, dependências) •  Gera relatórios sobre o projeto (qualidade, JavaDoc, arquivos fonte)
  • 28. O Maven e seus Plugins •  Meios de extensão para o Maven •  São buscados nos repositórios disponíveis •  São configurados dentro do POM •  Existem mais de 80 plugins oficiais catalogados
  • 29. Configuração de um plugin <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> </configuration> </plugin> </plugins>
  • 30. Avaliando a migração para o Maven 2.0 •  Quando não existe padronização •  Quando o padrão é o Ant •  Quando o padrão é o Maven 1.0
  • 31. Sem padrão •  Define um padrão para todos os projetos •  Facilita a integração e o reconhecimento do código •  Centraliza as informações sobre projetos e sub-projetos
  • 32. Ant como padrão •  Diminui a quantidade de configuração necessária para o build •  Tasks do Ant podem ser invocados pelo Maven •  Quantidade imensa de plugins prontos para ser utilizados
  • 33. Maven 1.0 como padrão •  O desenvolvimento do Maven 1.0 está congelado •  Novos plugins e integração com outras ferramentas está sendo feito com base no Maven 2
  • 34. Conclusão O objetivo principal do Maven como ferramenta é padronizar os projetos, para que eles possam ser gerenciados e entendidos com mais facilidade, para que os envolvidos se preocupem mais com o desenvolvimento e menos com as configurações
  • 36. Referências •  MASSOL, Vincent; O BRIEN, Timothy. Maven: A Developer s Notebook. O Reilly, 2005. •  MASSOL, Vincent. Maven 2.0 – Improve your build patterns. Palestra no Javapolis 2005 – disponível em http://javapolis.com/