Maven 2

1.635 visualizações

Publicada em

Apresentação sobre o Maven 2, originalmente apresentada no encontro do Grupo de Usuários Java da Paraíba em 2005.

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.635
No SlideShare
0
A partir de incorporações
0
Número de incorporações
79
Ações
Compartilhamentos
0
Downloads
48
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Maven 2

  1. 1. Maven 2.0Gerenciando os seus projetos com o Maven 2.0 2005
  2. 2. Maurício Linhares http://maujr.org/
  3. 3. Qual o problema?Fazer o build dos projetos deve sersimples, você não deve passar horastentando gerar um artefato a partir do código fonte.
  4. 4. Jorge ThiagoTrabalham em partes diferentes de um mesmo projeto
  5. 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. 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. 7. Um belo dia... ... Jorge fica doente E surge um bug no seu projeto que precisa ser resolvido
  8. 8. ThiagoQuem é que tem que resolver?
  9. 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. 10. ThiagoAlguns dias de trabalho depois...
  11. 11. Qual a moral da história? Os projetos devem ser padronizados!
  12. 12. Assuntos•  Como surgiu o Maven?•  O que é o Maven?•  Como o Maven funciona?•  Padronizando os projetos•  Maven e os seus plugins
  13. 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. 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. 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. 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. 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. 18. O que fica no POM?•  Desenvolvedores•  Dependências•  Configuração de plugins•  Controle de versão•  Repositórios...
  19. 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. 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. 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. 22. Fases de um projeto no MavenGerar código inicial Empacotar Compilar Testes de integração Testes unitários Instalar Implantar
  23. 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. 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. 25. Dependências ou artefatos•  São mantidas nos repositórios (locais ou remotos)•  São transitivas•  Podem ser atualizadas automaticamente pelo Maven
  26. 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. 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. 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. 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. 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. 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. 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. 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. 34. ConclusãoO objetivo principal do Maven como ferramentaé padronizar os projetos, para que eles possamser gerenciados e entendidos com maisfacilidade, para que os envolvidos sepreocupem mais com o desenvolvimento emenos com as configurações
  35. 35. Perguntas?
  36. 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/

×