Your SlideShare is downloading. ×

Maven 2

1,323
views

Published on

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

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


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,323
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
31
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Maven 2.0Gerenciando 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 sersimples, você não deve passar horastentando gerar um artefato a partir do código fonte.
  • 4. Jorge ThiagoTrabalham 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. ThiagoQuem é 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. ThiagoAlguns 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 MavenGerar 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ã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. Perguntas?
  • 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/

×