Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.brDescobrindo uma maneira mais ágil dedesenvolver software com ...
http://www.slideshare.net/rodrigobranas
@rodrigobranas  rodrigo.branas@gmail.com http://www.agilecode.com.brFormação AcadêmicaCiências da Computação – UFSCGerenci...
Rodrigo Branas – rodrigo.branas@gmail.com10 anos de experiência na plataforma Java1000 horas em sala de aulaMais de 50 pal...
Por que Agile?
No fundo não é isso que se espera?
Só Scrum não basta...
Hansei e Kaizen
Círculo de Ohno
Processo de desenvolvimento pode ser     uma fonte de desperdício...
Trabalho braçal ainda é grande
Vamos diferenciar desperdício    necessário e puro
Alguém tem algum exemplo?
Se sente pesado?
Desperdícios purosAtividades que poderiam ser reduzidas ou eliminadas
Desperdícios purosAtividades que poderiam ser reduzidas ou eliminadas• Configurar o projeto em uma maquina nova, em  quant...
Desperdícios purosAtividades que poderiam ser reduzidas ou eliminadas• Configurar o projeto em uma maquina nova, em  quant...
Desperdícios purosAtividades que poderiam ser reduzidas ou eliminadas• Configurar o projeto em uma maquina nova, em  quant...
Desperdícios purosAtividades que poderiam ser reduzidas ou eliminadas• Configurar o projeto em uma maquina nova, em  quant...
Desperdícios purosAtividades que poderiam ser reduzidas ou eliminadas• Configurar o projeto em uma maquina nova, em  quant...
Desperdícios purosAtividades que poderiam ser reduzidas ou eliminadas• Configurar o projeto em uma maquina nova, em  quant...
Desperdícios purosAtividades que poderiam ser reduzidas ou eliminadas• Configurar o projeto em uma maquina nova, em  quant...
Pair Programming
Piloto + Copiloto
Será que a velocidade do projeto         será reduzida?
Onde está o gargalo nodesenvolvimento de software?
Não somos digitadores
Vantagens do Pair Programming: Código de melhor qualidade
Vantagens do Pair Programming: Código de melhor qualidade Aumento do foco
Vantagens do Pair Programming: Código de melhor qualidade Aumento do foco Disseminação de conhecimento na equipe
Vantagens do Pair Programming: Código de melhor qualidade Aumento do foco Disseminação de conhecimento na equipe Melhora n...
É obrigatório trabalhar em par     durante todo o dia?
Técnica do Pomodoro!
Escolha a tarefa
Acerte o seu Pomodoro para 25           minutos
Trabalhe até o fim do Pomodoro
Faça um intervalo de 5 minutos
A cada 4 Pomodoros faça umintervalo longo de 15 a 20 minutos
A importância da rotação dos           pares
Monte um ambiente híbrido para facilitar o pair programming!
Versionamento
Deu problema! Volta a versão...
Em que versão seu projeto está        atualmente?
Estratégia de numeração
A árvore do SVN
Aceitam um desafio?
Em 10 minutos!
Gerenciamento de configuração do          seu projeto
MavenGerenciamento de configuração do seu projeto
MavenGerenciamento de configuração do seu projeto         Compilação o código fonte
MavenGerenciamento de configuração do seu projeto        Compilação o código fonte  Compilar e executar os códigos de testes
MavenGerenciamento de configuração do seu projeto        Compilação o código fonte  Compilar e executar os códigos de test...
MavenGerenciamento de configuração do seu projeto        Compilação o código fonte  Compilar e executar os códigos de test...
MavenGerenciamento de configuração do seu projeto         Compilação o código fonte  Compilar e executar os códigos de tes...
MavenGerenciamento de configuração do seu projeto           Compilação o código fonte   Compilar e executar os códigos de ...
Maven  Gerenciamento de configuração do seu projeto            Compilação o código fonte     Compilar e executar os código...
Maven  Gerenciamento de configuração do seu projeto             Compilação o código fonte     Compilar e executar os códig...
O céu é o limite!
Processo de instalação da ferramenta
MavenProcesso de Instalação
Maven       Processo de InstalaçãoDownload em http://maven.apache.org
Maven       Processo de InstalaçãoDownload em http://maven.apache.org    Descompactar a ferramenta
Maven             Processo de Instalação       Download em http://maven.apache.org             Descompactar a ferramentaDe...
Maven             Processo de Instalação       Download em http://maven.apache.org             Descompactar a ferramentaDe...
mvn --version
Criando seu primeiro projeto
Archetypes
mvn archetype:generate
MavenCriando seu primeiro projeto
MavenCriando seu primeiro projeto  mvn archetype:generate
MavenCriando seu primeiro projeto mvn archetype:generateEscolhar um tipo de projeto
Maven            Criando seu primeiro projeto                mvn archetype:generate               Escolhar um tipo de proj...
Quem é você?
Maven3 informações fundamentais
Maven        3 informações fundamentaisgroupId: identificação relacionada a empresa ouorganização desenvolvedora do artefa...
Maven        3 informações fundamentaisgroupId: identificação relacionada a empresa ouorganização desenvolvedora do artefa...
Maven        3 informações fundamentaisgroupId: identificação relacionada a empresa ouorganização desenvolvedora do artefa...
mvn eclipse:eclipse
Estrutura de diretórios
Promovendo a padronização
MavenEstrutura de diretórios
Maven           Estrutura de diretóriossrc/main/java: Onde fica todo o código fonte
Maven           Estrutura de diretóriossrc/main/java: Onde fica todo o código fontesrc/main/resources: Arquivos de configu...
Maven           Estrutura de diretóriossrc/main/java: Onde fica todo o código fontesrc/main/resources: Arquivos de configu...
Maven           Estrutura de diretóriossrc/main/java: Onde fica todo o código fontesrc/main/resources: Arquivos de configu...
Maven           Estrutura de diretóriossrc/main/java: Onde fica todo o código fontesrc/main/resources: Arquivos de configu...
Maven           Estrutura de diretóriossrc/main/java: Onde fica todo o código fontesrc/main/resources: Arquivos de configu...
Maven           Estrutura de diretóriossrc/main/java: Onde fica todo o código fontesrc/main/resources: Arquivos de configu...
Coração do projeto – POM.xml
Centraliza todas as configurações
Arquivo pom.xml1.   <project>2.    <modelVersion>4.0.0</modelVersion>3.    <groupId>br.com.rodrigobranas</groudId>4.    <a...
Gestão de Dependências
Aonde ficam armazenadas as      dependências?
Entendendo os repositórios
Quero incluir uma novadependência no projeto
Arquivo pom.xml1.   <project>2.    <modelVersion>4.0.0</modelVersion>3.    <groupId>br.com.rodrigobranas</groudId>4.    <a...
Arquivo pom.xml1.   <project>2.    <modelVersion>4.0.0</modelVersion>3.    <groupId>br.com.rodrigobranas</groudId>4.    <a...
Arquivo pom.xml1.    <project>2.     <modelVersion>4.0.0</modelVersion>3.     <groupId>br.com.rodrigobranas</groudId>4.   ...
Arquivo pom.xml1.    <project>2.     <modelVersion>4.0.0</modelVersion>3.     <groupId>br.com.rodrigobranas</groudId>4.   ...
mvn eclipse:eclipse
Escopo das dependências
MavenEscopo das dependências
Maven         Escopo das dependênciasCompile: É o escopo padrão e será utilizado caso apropriedade não seja definida.
Maven         Escopo das dependênciasCompile: É o escopo padrão e será utilizado caso apropriedade não seja definida.Test:...
Maven         Escopo das dependênciasCompile: É o escopo padrão e será utilizado caso apropriedade não seja definida.Test:...
Maven         Escopo das dependênciasCompile: É o escopo padrão e será utilizado caso apropriedade não seja definida.Test:...
Arquivo pom.xml1.    <project>2.     <modelVersion>4.0.0</modelVersion>3.     <groupId>br.com.rodrigobranas</groudId>4.   ...
Arquivo pom.xml1.    <project>2.     <modelVersion>4.0.0</modelVersion>3.     <groupId>br.com.rodrigobranas</groudId>4.   ...
Ciclo de Vida
MavenCiclo de Vida
Maven               Ciclo de Vidacompile: Compila o código fonte.
Maven               Ciclo de Vidacompile: Compila o código fonte.test: Compila e executa os testes.
Maven              Ciclo de Vidacompile: Compila o código fonte.test: Compila e executa os testes.package: Empacota o códi...
Maven               Ciclo de Vidacompile: Compila o código fonte.test: Compila e executa os testes.package: Empacota o cód...
Maven               Ciclo de Vidacompile: Compila o código fonte.test: Compila e executa os testes.package: Empacota o cód...
Maven               Ciclo de Vidacompile: Compila o código fonte.test: Compila e executa os testes.package: Empacota o cód...
Maven               Ciclo de Vidacompile: Compila o código fonte.test: Compila e executa os testes.package: Empacota o cód...
mvn clean package
Plugins
1.   <project>2.    <modelVersion>4.0.0</modelVersion>3.    <groupId>br.com.rodrigobranas</groudId>4.    <artifactId>my-ap...
1.   <project>2.    <modelVersion>4.0.0</modelVersion>3.    <groupId>br.com.rodrigobranas</groudId>4.    <artifactId>my-ap...
1.    <project>2.     <modelVersion>4.0.0</modelVersion>3.     <groupId>br.com.rodrigobranas</groudId>4.     <artifactId>m...
1.    <project>2.     <modelVersion>4.0.0</modelVersion>3.     <groupId>br.com.rodrigobranas</groudId>4.     <artifactId>m...
1.    <project>2.     <modelVersion>4.0.0</modelVersion>3.     <groupId>br.com.rodrigobranas</groudId>4.     <artifactId>m...
1.    <project>2.     <modelVersion>4.0.0</modelVersion>3.     <groupId>br.com.rodrigobranas</groudId>4.     <artifactId>m...
1.    <project>2.     <modelVersion>4.0.0</modelVersion>3.     <groupId>br.com.rodrigobranas</groudId>4.     <artifactId>m...
Goals
mvn package jboss:hard-deploy
Profiles
Chaveamento de propriedades     dentro do POM.xml
1.    <project>2.     <modelVersion>4.0.0</modelVersion>3.     <groupId>br.com.rodrigobranas</groudId>4.     <artifactId>m...
1.    <project>2.     <modelVersion>4.0.0</modelVersion>3.     <groupId>br.com.rodrigobranas</groudId>4.     <artifactId>m...
1.    <project>2.     <modelVersion>4.0.0</modelVersion>3.     <groupId>br.com.rodrigobranas</groudId>4.     <artifactId>m...
1.   <project>2.    <modelVersion>4.0.0</modelVersion>3.    <groupId>br.com.rodrigobranas</groudId>4.    <artifactId>my-ap...
1.    <project>2.     <modelVersion>4.0.0</modelVersion>3.     <groupId>br.com.rodrigobranas</groudId>4.     <artifactId>m...
1.    <project>2.     <modelVersion>4.0.0</modelVersion>3.     <groupId>br.com.rodrigobranas</groudId>4.     <artifactId>m...
1.    <project>2.     <modelVersion>4.0.0</modelVersion>3.     <groupId>br.com.rodrigobranas</groudId>4.     <artifactId>m...
1.    <project>2.     <modelVersion>4.0.0</modelVersion>3.     <groupId>br.com.rodrigobranas</groudId>4.     <artifactId>m...
1.    <project>2.     <modelVersion>4.0.0</modelVersion>3.     <groupId>br.com.rodrigobranas</groudId>4.     <artifactId>m...
mvn package jboss:hard-deploy -P branas
Integração Contínua
Evitando a síndrome do...
Hudson
Processo de instalação da ferramenta
HudsonProcesso de Instalação
Hudson     Processo de InstalaçãoDownload em http://hudson-ci.org
Hudson            Processo de Instalação       Download em http://hudson-ci.orgRealizar o deploy do arquivo hudson.war em ...
Hudson            Processo de Instalação       Download em http://hudson-ci.orgRealizar o deploy do arquivo hudson.war em ...
HudsonCriando uma tarefa
Hudson  Criando uma tarefaClicar em “Nova Tarefa”
Hudson  Criando uma tarefaClicar em “Nova Tarefa”
Hudson    Criando uma tarefa  Clicar em “Nova Tarefa”Preencher o nome da tarefa
Hudson    Criando uma tarefa  Clicar em “Nova Tarefa”Preencher o nome da tarefa
Hudson    Criando uma tarefa  Clicar em “Nova Tarefa”Preencher o nome da tarefa     Configurar a tarefa
Sonar
mvn sonar:sonar
Processo de instalação da ferramenta
SonarInstalação
Sonar               Instalação              Download emhttp://www.sonarsource.org/download.html
Sonar               Instalação              Download emhttp://www.sonarsource.org/download.html Descompactar no local de s...
Sonar               Instalação               Download emhttp://www.sonarsource.org/download.html Descompactar no local de ...
Sonar               Instalação               Download emhttp://www.sonarsource.org/download.html Descompactar no local de ...
Métricas
SonarMétricas
Sonar     MétricasCobertura de testes
Sonar     MétricasCobertura de testes  Complexidade
Sonar     MétricasCobertura de testes  Complexidade   Duplicações
Sonar     MétricasCobertura de testes  Complexidade   Duplicações   Comentários
Sonar     MétricasCobertura de testes  Complexidade   Duplicações   Comentários    Violações
Obrigado!www.slideshare.net/rodrigobranas
Maven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
Próximos SlideShares
Carregando em…5
×

Maven 3, Sonar e Hudson

3.654 visualizações

Publicada em

Nesta palestra vamos abordar formas de criar um ambiente de desenvolvimento de software mais ágil por meio da utilização e integração das ferramentas Maven 3, Sonar e Hudson. Com isso é possível estímular a eliminação de atividades repetitivas dentro do processo de desenvolvimento além de auxiliar na redução de defeitos e aumentar a qualidade do código produzido. A palestra é montada em ferramentas feitas para a plataforma Java.

Publicada em: Tecnologia
  • Seja o primeiro a comentar

Maven 3, Sonar e Hudson

  1. 1. Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.brDescobrindo uma maneira mais ágil dedesenvolver software com Maven 3, Sonar e Hudson
  2. 2. http://www.slideshare.net/rodrigobranas
  3. 3. @rodrigobranas rodrigo.branas@gmail.com http://www.agilecode.com.brFormação AcadêmicaCiências da Computação – UFSCGerenciamento de Projetos - FGVCertificaçõesSCJA, SCJP, SCJD, SCWCD, SCBCD, PMP, MCP e CSM
  4. 4. Rodrigo Branas – rodrigo.branas@gmail.com10 anos de experiência na plataforma Java1000 horas em sala de aulaMais de 50 palestras em eventosLíder da área de desenvolvimento na GenneraAutor da revista Java MagazinePalestranteInstrutor da Academia Java e Agile da GlobalcodeCriador dos treinamentos de Clean Code, Selenium eMaven da Agile CodeTrabalhou com as empresas: EDS, HP, GM, Citibank,OnCast, Globalcode, V.Office, Dígitro, Softplan, Unimed,Suntech, Vale do Rio Doce, Senai, NET.
  5. 5. Por que Agile?
  6. 6. No fundo não é isso que se espera?
  7. 7. Só Scrum não basta...
  8. 8. Hansei e Kaizen
  9. 9. Círculo de Ohno
  10. 10. Processo de desenvolvimento pode ser uma fonte de desperdício...
  11. 11. Trabalho braçal ainda é grande
  12. 12. Vamos diferenciar desperdício necessário e puro
  13. 13. Alguém tem algum exemplo?
  14. 14. Se sente pesado?
  15. 15. Desperdícios purosAtividades que poderiam ser reduzidas ou eliminadas
  16. 16. Desperdícios purosAtividades que poderiam ser reduzidas ou eliminadas• Configurar o projeto em uma maquina nova, em quanto tempo estamos prontos para desenvolver?
  17. 17. Desperdícios purosAtividades que poderiam ser reduzidas ou eliminadas• Configurar o projeto em uma maquina nova, em quanto tempo estamos prontos para desenvolver?• Modificar a versão de uma biblioteca
  18. 18. Desperdícios purosAtividades que poderiam ser reduzidas ou eliminadas• Configurar o projeto em uma maquina nova, em quanto tempo estamos prontos para desenvolver?• Modificar a versão de uma biblioteca• Gerar uma versão da aplicação para ser colocada em produção
  19. 19. Desperdícios purosAtividades que poderiam ser reduzidas ou eliminadas• Configurar o projeto em uma maquina nova, em quanto tempo estamos prontos para desenvolver?• Modificar a versão de uma biblioteca• Gerar uma versão da aplicação para ser colocada em produção• Transferência de conhecimento
  20. 20. Desperdícios purosAtividades que poderiam ser reduzidas ou eliminadas• Configurar o projeto em uma maquina nova, em quanto tempo estamos prontos para desenvolver?• Modificar a versão de uma biblioteca• Gerar uma versão da aplicação para ser colocada em produção• Transferência de conhecimento• Deu problema! É fácil voltar a versão?
  21. 21. Desperdícios purosAtividades que poderiam ser reduzidas ou eliminadas• Configurar o projeto em uma maquina nova, em quanto tempo estamos prontos para desenvolver?• Modificar a versão de uma biblioteca• Gerar uma versão da aplicação para ser colocada em produção• Transferência de conhecimento• Deu problema! É fácil voltar a versão?• Entender código ruim
  22. 22. Desperdícios purosAtividades que poderiam ser reduzidas ou eliminadas• Configurar o projeto em uma maquina nova, em quanto tempo estamos prontos para desenvolver?• Modificar a versão de uma biblioteca• Gerar uma versão da aplicação para ser colocada em produção• Transferência de conhecimento• Deu problema! É fácil voltar a versão?• Entender código ruim• Corrigir bugs
  23. 23. Pair Programming
  24. 24. Piloto + Copiloto
  25. 25. Será que a velocidade do projeto será reduzida?
  26. 26. Onde está o gargalo nodesenvolvimento de software?
  27. 27. Não somos digitadores
  28. 28. Vantagens do Pair Programming: Código de melhor qualidade
  29. 29. Vantagens do Pair Programming: Código de melhor qualidade Aumento do foco
  30. 30. Vantagens do Pair Programming: Código de melhor qualidade Aumento do foco Disseminação de conhecimento na equipe
  31. 31. Vantagens do Pair Programming: Código de melhor qualidade Aumento do foco Disseminação de conhecimento na equipe Melhora na produtividade
  32. 32. É obrigatório trabalhar em par durante todo o dia?
  33. 33. Técnica do Pomodoro!
  34. 34. Escolha a tarefa
  35. 35. Acerte o seu Pomodoro para 25 minutos
  36. 36. Trabalhe até o fim do Pomodoro
  37. 37. Faça um intervalo de 5 minutos
  38. 38. A cada 4 Pomodoros faça umintervalo longo de 15 a 20 minutos
  39. 39. A importância da rotação dos pares
  40. 40. Monte um ambiente híbrido para facilitar o pair programming!
  41. 41. Versionamento
  42. 42. Deu problema! Volta a versão...
  43. 43. Em que versão seu projeto está atualmente?
  44. 44. Estratégia de numeração
  45. 45. A árvore do SVN
  46. 46. Aceitam um desafio?
  47. 47. Em 10 minutos!
  48. 48. Gerenciamento de configuração do seu projeto
  49. 49. MavenGerenciamento de configuração do seu projeto
  50. 50. MavenGerenciamento de configuração do seu projeto Compilação o código fonte
  51. 51. MavenGerenciamento de configuração do seu projeto Compilação o código fonte Compilar e executar os códigos de testes
  52. 52. MavenGerenciamento de configuração do seu projeto Compilação o código fonte Compilar e executar os códigos de testes Empacotar o projeto para distribuição
  53. 53. MavenGerenciamento de configuração do seu projeto Compilação o código fonte Compilar e executar os códigos de testes Empacotar o projeto para distribuição Realizar a gestão de dependências
  54. 54. MavenGerenciamento de configuração do seu projeto Compilação o código fonte Compilar e executar os códigos de testes Empacotar o projeto para distribuição Realizar a gestão de dependências Versionamento em diferentes SCM’s
  55. 55. MavenGerenciamento de configuração do seu projeto Compilação o código fonte Compilar e executar os códigos de testes Empacotar o projeto para distribuição Realizar a gestão de dependências Versionamento em diferentes SCM’sDeployment em diversos servidores de aplicação
  56. 56. Maven Gerenciamento de configuração do seu projeto Compilação o código fonte Compilar e executar os códigos de testes Empacotar o projeto para distribuição Realizar a gestão de dependências Versionamento em diferentes SCM’s Deployment em diversos servidores de aplicaçãoGeração de documentação (parecido com uma wiki)
  57. 57. Maven Gerenciamento de configuração do seu projeto Compilação o código fonte Compilar e executar os códigos de testes Empacotar o projeto para distribuição Realizar a gestão de dependências Versionamento em diferentes SCM’s Deployment em diversos servidores de aplicaçãoGeração de documentação (parecido com uma wiki) Verificar a qualidade do seu código
  58. 58. O céu é o limite!
  59. 59. Processo de instalação da ferramenta
  60. 60. MavenProcesso de Instalação
  61. 61. Maven Processo de InstalaçãoDownload em http://maven.apache.org
  62. 62. Maven Processo de InstalaçãoDownload em http://maven.apache.org Descompactar a ferramenta
  63. 63. Maven Processo de Instalação Download em http://maven.apache.org Descompactar a ferramentaDefinir a variável de ambiente M2_HOME apontando para o diretório de instalação
  64. 64. Maven Processo de Instalação Download em http://maven.apache.org Descompactar a ferramentaDefinir a variável de ambiente M2_HOME apontando para o diretório de instalação Atualizar a variável de ambiente PATH apontando para o diretório M2_HOME/bin
  65. 65. mvn --version
  66. 66. Criando seu primeiro projeto
  67. 67. Archetypes
  68. 68. mvn archetype:generate
  69. 69. MavenCriando seu primeiro projeto
  70. 70. MavenCriando seu primeiro projeto mvn archetype:generate
  71. 71. MavenCriando seu primeiro projeto mvn archetype:generateEscolhar um tipo de projeto
  72. 72. Maven Criando seu primeiro projeto mvn archetype:generate Escolhar um tipo de projetoDefinir as 3 informações fundamentais que identificamum artefato no Maven, como se fosse uma certidão de nascimento
  73. 73. Quem é você?
  74. 74. Maven3 informações fundamentais
  75. 75. Maven 3 informações fundamentaisgroupId: identificação relacionada a empresa ouorganização desenvolvedora do artefato. Essainformação vai gerar a estrutura de pacote.
  76. 76. Maven 3 informações fundamentaisgroupId: identificação relacionada a empresa ouorganização desenvolvedora do artefato. Essainformação vai gerar a estrutura de pacote.artifactId: identificação do artefato
  77. 77. Maven 3 informações fundamentaisgroupId: identificação relacionada a empresa ouorganização desenvolvedora do artefato. Essainformação vai gerar a estrutura de pacote.artifactId: identificação do artefatoversion: versão do artefato
  78. 78. mvn eclipse:eclipse
  79. 79. Estrutura de diretórios
  80. 80. Promovendo a padronização
  81. 81. MavenEstrutura de diretórios
  82. 82. Maven Estrutura de diretóriossrc/main/java: Onde fica todo o código fonte
  83. 83. Maven Estrutura de diretóriossrc/main/java: Onde fica todo o código fontesrc/main/resources: Arquivos de configuração
  84. 84. Maven Estrutura de diretóriossrc/main/java: Onde fica todo o código fontesrc/main/resources: Arquivos de configuraçãosrc/main/webapp: Estrutura Web
  85. 85. Maven Estrutura de diretóriossrc/main/java: Onde fica todo o código fontesrc/main/resources: Arquivos de configuraçãosrc/main/webapp: Estrutura Websrc/test/java: Onde fica todo o código de teste
  86. 86. Maven Estrutura de diretóriossrc/main/java: Onde fica todo o código fontesrc/main/resources: Arquivos de configuraçãosrc/main/webapp: Estrutura Websrc/test/java: Onde fica todo o código de testesrc/test/resources: Arquivos de configuração
  87. 87. Maven Estrutura de diretóriossrc/main/java: Onde fica todo o código fontesrc/main/resources: Arquivos de configuraçãosrc/main/webapp: Estrutura Websrc/test/java: Onde fica todo o código de testesrc/test/resources: Arquivos de configuraçãosrc/site: Arquivos de documentação
  88. 88. Maven Estrutura de diretóriossrc/main/java: Onde fica todo o código fontesrc/main/resources: Arquivos de configuraçãosrc/main/webapp: Estrutura Websrc/test/java: Onde fica todo o código de testesrc/test/resources: Arquivos de configuraçãosrc/site: Arquivos de documentaçãotarget: Pacotes gerados e fontes compilados
  89. 89. Coração do projeto – POM.xml
  90. 90. Centraliza todas as configurações
  91. 91. Arquivo pom.xml1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. </project>
  92. 92. Gestão de Dependências
  93. 93. Aonde ficam armazenadas as dependências?
  94. 94. Entendendo os repositórios
  95. 95. Quero incluir uma novadependência no projeto
  96. 96. Arquivo pom.xml1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. </project>
  97. 97. Arquivo pom.xml1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <dependencies>7. </dependencies>8. </project>
  98. 98. Arquivo pom.xml1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <dependencies>7. <dependency>8. </dependency>9. </dependencies>10. </project>
  99. 99. Arquivo pom.xml1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <dependencies>7. <dependency>8. <groudId>org.seleniumhq.selenium</groupId>9. <artifactId>selenium-java</artifactId>10. <version>2.24.1</version>11. </dependency>12. </dependencies>13. </project>
  100. 100. mvn eclipse:eclipse
  101. 101. Escopo das dependências
  102. 102. MavenEscopo das dependências
  103. 103. Maven Escopo das dependênciasCompile: É o escopo padrão e será utilizado caso apropriedade não seja definida.
  104. 104. Maven Escopo das dependênciasCompile: É o escopo padrão e será utilizado caso apropriedade não seja definida.Test: Indica que a dependência estará disponívelapenas na compilação e execução dos testes.
  105. 105. Maven Escopo das dependênciasCompile: É o escopo padrão e será utilizado caso apropriedade não seja definida.Test: Indica que a dependência estará disponívelapenas na compilação e execução dos testes.Provided: A dependência estará disponível para acompilação mas não será empacotada.
  106. 106. Maven Escopo das dependênciasCompile: É o escopo padrão e será utilizado caso apropriedade não seja definida.Test: Indica que a dependência estará disponívelapenas na compilação e execução dos testes.Provided: A dependência estará disponível para acompilação mas não será empacotada.Runtime: A dependência estará disponível apenasem execução, não disponível para compilação.
  107. 107. Arquivo pom.xml1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <dependencies>7. <dependency>8. <groudId>org.seleniumhq.selenium</groupId>9. <artifactId>selenium-java</artifactId>10. <version>2.24.1</version>11. </dependency>12. </dependencies>13. </project>
  108. 108. Arquivo pom.xml1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <dependencies>7. <dependency>8. <groudId>org.seleniumhq.selenium</groupId>9. <artifactId>selenium-java</artifactId>10. <version>2.24.1</version>11. <scope>test</scope>12. </dependency>13. </dependencies>14. </project>
  109. 109. Ciclo de Vida
  110. 110. MavenCiclo de Vida
  111. 111. Maven Ciclo de Vidacompile: Compila o código fonte.
  112. 112. Maven Ciclo de Vidacompile: Compila o código fonte.test: Compila e executa os testes.
  113. 113. Maven Ciclo de Vidacompile: Compila o código fonte.test: Compila e executa os testes.package: Empacota o código fonte compilado noformato especificado.
  114. 114. Maven Ciclo de Vidacompile: Compila o código fonte.test: Compila e executa os testes.package: Empacota o código fonte compilado noformato especificado.install: Instala o projeto no repositório local
  115. 115. Maven Ciclo de Vidacompile: Compila o código fonte.test: Compila e executa os testes.package: Empacota o código fonte compilado noformato especificado.install: Instala o projeto no repositório local.deploy: Instala o projeto no repositório remoto.
  116. 116. Maven Ciclo de Vidacompile: Compila o código fonte.test: Compila e executa os testes.package: Empacota o código fonte compilado noformato especificado.install: Instala o projeto no repositório local.deploy: Instala o projeto no repositório remoto.clean: Apaga o diretório target
  117. 117. Maven Ciclo de Vidacompile: Compila o código fonte.test: Compila e executa os testes.package: Empacota o código fonte compilado noformato especificado.install: Instala o projeto no repositório local.deploy: Instala o projeto no repositório remoto.clean: Apaga o diretório targetsite: Gera a documentação do projeto
  118. 118. mvn clean package
  119. 119. Plugins
  120. 120. 1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. </project>
  121. 121. 1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <build>7. </build>8. </project>
  122. 122. 1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <build>7. <plugins>8. </plugins>9. </build>10. </project>
  123. 123. 1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <build>7. <plugins>8. <plugin>9. </plugin>10. </plugins>11. </build>12. </project>
  124. 124. 1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <build>7. <plugins>8. <plugin>9. <groupId>org.codehaus.mojo</groupId>10. <artifactId>jboss-maven-plugin</artifactId>11. <version>1.5.0</version>12. </plugin>13. </plugins>14. </build>15. </project>
  125. 125. 1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <build>7. <plugins>8. <plugin>9. <groupId>org.codehaus.mojo</groupId>10. <artifactId>jboss-maven-plugin</artifactId>11. <version>1.5.0</version>12. <configuration>13. </configuration>14. </plugin>15. </plugins>16. </build>17. </project>
  126. 126. 1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <build>7. <plugins>8. <plugin>9. <groupId>org.codehaus.mojo</groupId>10. <artifactId>jboss-maven-plugin</artifactId>11. <version>1.5.0</version>12. <configuration>13. <jbossHome>/usr/local/jboss</jbossHome>14. </configuration>15. </plugin>16. </plugins>17. </build>
  127. 127. Goals
  128. 128. mvn package jboss:hard-deploy
  129. 129. Profiles
  130. 130. Chaveamento de propriedades dentro do POM.xml
  131. 131. 1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <build>7. <plugins>8. <plugin>9. <groupId>org.codehaus.mojo</groupId>10. <artifactId>jboss-maven-plugin</artifactId>11. <version>1.5.0</version>12. <configuration>13. <jbossHome>/usr/local/jboss</jbossHome>14. </configuration>15. </plugin>16. </plugins>17. </build>
  132. 132. 1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <build>7. <plugins>8. <plugin>9. <groupId>org.codehaus.mojo</groupId>10. <artifactId>jboss-maven-plugin</artifactId>11. <version>1.5.0</version>12. <configuration>13. <jbossHome></jbossHome>14. </configuration>15. </plugin>16. </plugins>17. </build>
  133. 133. 1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <build>7. <plugins>8. <plugin>9. <groupId>org.codehaus.mojo</groupId>10. <artifactId>jboss-maven-plugin</artifactId>11. <version>1.5.0</version>12. <configuration>13. <jbossHome>${anything}</jbossHome>14. </configuration>15. </plugin>16. </plugins>17. </build>
  134. 134. 1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <profiles>7. </profiles>8. </project>
  135. 135. 1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <profiles>7. <profile>8. </profile>9. </profiles>10. </project>
  136. 136. 1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <profiles>7. <profile>8. <id>branas</id>9. </profile>10. </profiles>11. </project>
  137. 137. 1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <profiles>7. <profile>8. <id>branas</id>9. <properties>10. </properties>11. </profile>12. </profiles>13. </project>
  138. 138. 1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <profiles>7. <profile>8. <id>branas</id>9. <properties>10. <anything>/home/rodrigobranas/jboss</anything>11. </properties>12. </profile>13. </profiles>14. </project>
  139. 139. 1. <project>2. <modelVersion>4.0.0</modelVersion>3. <groupId>br.com.rodrigobranas</groudId>4. <artifactId>my-app</artifactId>5. <version>1.0</version>6. <profiles>7. <profile>8. <id>branas</id>9. <properties>10. <anything>/home/rodrigobranas/jboss</anything>11. </properties>12. </profile>13. <profile>14. <id>producao</id>15. <properties>16. <anything>/usr/local/jboss</anything>17. </properties>
  140. 140. mvn package jboss:hard-deploy -P branas
  141. 141. Integração Contínua
  142. 142. Evitando a síndrome do...
  143. 143. Hudson
  144. 144. Processo de instalação da ferramenta
  145. 145. HudsonProcesso de Instalação
  146. 146. Hudson Processo de InstalaçãoDownload em http://hudson-ci.org
  147. 147. Hudson Processo de Instalação Download em http://hudson-ci.orgRealizar o deploy do arquivo hudson.war em seu container web favorito
  148. 148. Hudson Processo de Instalação Download em http://hudson-ci.orgRealizar o deploy do arquivo hudson.war em seu container web favorito Acessar http://localhost:8080/hudson
  149. 149. HudsonCriando uma tarefa
  150. 150. Hudson Criando uma tarefaClicar em “Nova Tarefa”
  151. 151. Hudson Criando uma tarefaClicar em “Nova Tarefa”
  152. 152. Hudson Criando uma tarefa Clicar em “Nova Tarefa”Preencher o nome da tarefa
  153. 153. Hudson Criando uma tarefa Clicar em “Nova Tarefa”Preencher o nome da tarefa
  154. 154. Hudson Criando uma tarefa Clicar em “Nova Tarefa”Preencher o nome da tarefa Configurar a tarefa
  155. 155. Sonar
  156. 156. mvn sonar:sonar
  157. 157. Processo de instalação da ferramenta
  158. 158. SonarInstalação
  159. 159. Sonar Instalação Download emhttp://www.sonarsource.org/download.html
  160. 160. Sonar Instalação Download emhttp://www.sonarsource.org/download.html Descompactar no local de sua preferência
  161. 161. Sonar Instalação Download emhttp://www.sonarsource.org/download.html Descompactar no local de sua preferência Executar o Sonar.sh ou StartSonar.bat
  162. 162. Sonar Instalação Download emhttp://www.sonarsource.org/download.html Descompactar no local de sua preferência Executar o Sonar.sh ou StartSonar.bat http://localhost:9000 mvn sonar:sonar
  163. 163. Métricas
  164. 164. SonarMétricas
  165. 165. Sonar MétricasCobertura de testes
  166. 166. Sonar MétricasCobertura de testes Complexidade
  167. 167. Sonar MétricasCobertura de testes Complexidade Duplicações
  168. 168. Sonar MétricasCobertura de testes Complexidade Duplicações Comentários
  169. 169. Sonar MétricasCobertura de testes Complexidade Duplicações Comentários Violações
  170. 170. Obrigado!www.slideshare.net/rodrigobranas

×