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.
3. @rodrigobranas
rodrigo.branas@gmail.com
http://www.agilecode.com.br
Formação Acadêmica
Ciências da Computação – UFSC
Gerenciamento de Projetos - FGV
Certificações
SCJA, SCJP, SCJD, SCWCD, SCBCD, PMP, MCP e CSM
4. Rodrigo Branas – rodrigo.branas@gmail.com
10 anos de experiência na plataforma Java
1000 horas em sala de aula
Mais de 50 palestras em eventos
Líder da área de desenvolvimento na Gennera
Autor da revista Java Magazine
Palestrante
Instrutor da Academia Java e Agile da Globalcode
Criador dos treinamentos de Clean Code, Selenium e
Maven da Agile Code
Trabalhou com as empresas: EDS, HP, GM, Citibank,
OnCast, Globalcode, V.Office, Dígitro, Softplan, Unimed,
Suntech, Vale do Rio Doce, Senai, NET.
20. Desperdícios puros
Atividades que poderiam ser reduzidas ou eliminadas
• Configurar o projeto em uma maquina nova, em
quanto tempo estamos prontos para desenvolver?
21. Desperdícios puros
Atividades 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
22. Desperdícios puros
Atividades 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
23. Desperdícios puros
Atividades 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
24. Desperdícios puros
Atividades 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?
25. Desperdícios puros
Atividades 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
26. Desperdícios puros
Atividades 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
58. 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
59. 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
60. 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
61. 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ção
62. 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ção
Geração de documentação (parecido com uma wiki)
63. 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ção
Geração de documentação (parecido com uma wiki)
Verificar a qualidade do seu código
67. Maven
Processo de Instalação
Download em http://maven.apache.org
68. Maven
Processo de Instalação
Download em http://maven.apache.org
Descompactar a ferramenta
69. Maven
Processo de Instalação
Download em http://maven.apache.org
Descompactar a ferramenta
Definir a variável de ambiente M2_HOME apontando
para o diretório de instalação
70. Maven
Processo de Instalação
Download em http://maven.apache.org
Descompactar a ferramenta
Definir 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
79. Maven
Criando seu primeiro projeto
mvn archetype:generate
Escolhar um tipo de projeto
Definir as 3 informações fundamentais que identificam
um artefato no Maven, como se fosse uma certidão
de nascimento
82. Maven
3 informações fundamentais
groupId: identificação relacionada a empresa ou
organização desenvolvedora do artefato. Essa
informação vai gerar a estrutura de pacote.
83. Maven
3 informações fundamentais
groupId: identificação relacionada a empresa ou
organização desenvolvedora do artefato. Essa
informação vai gerar a estrutura de pacote.
artifactId: identificação do artefato
84. Maven
3 informações fundamentais
groupId: identificação relacionada a empresa ou
organização desenvolvedora do artefato. Essa
informação vai gerar a estrutura de pacote.
artifactId: identificação do artefato
version: versão do artefato
90. Maven
Estrutura de diretórios
src/main/java: Onde fica todo o código fonte
91. Maven
Estrutura de diretórios
src/main/java: Onde fica todo o código fonte
src/main/resources: Arquivos de configuração
92. Maven
Estrutura de diretórios
src/main/java: Onde fica todo o código fonte
src/main/resources: Arquivos de configuração
src/main/webapp: Estrutura Web
93. Maven
Estrutura de diretórios
src/main/java: Onde fica todo o código fonte
src/main/resources: Arquivos de configuração
src/main/webapp: Estrutura Web
src/test/java: Onde fica todo o código de teste
94. Maven
Estrutura de diretórios
src/main/java: Onde fica todo o código fonte
src/main/resources: Arquivos de configuração
src/main/webapp: Estrutura Web
src/test/java: Onde fica todo o código de teste
src/test/resources: Arquivos de configuração
95. Maven
Estrutura de diretórios
src/main/java: Onde fica todo o código fonte
src/main/resources: Arquivos de configuração
src/main/webapp: Estrutura Web
src/test/java: Onde fica todo o código de teste
src/test/resources: Arquivos de configuração
src/site: Arquivos de documentação
96. Maven
Estrutura de diretórios
src/main/java: Onde fica todo o código fonte
src/main/resources: Arquivos de configuração
src/main/webapp: Estrutura Web
src/test/java: Onde fica todo o código de teste
src/test/resources: Arquivos de configuração
src/site: Arquivos de documentação
target: Pacotes gerados e fontes compilados
112. Maven
Escopo das dependências
Compile: É o escopo padrão e será utilizado caso a
propriedade não seja definida.
113. Maven
Escopo das dependências
Compile: É o escopo padrão e será utilizado caso a
propriedade não seja definida.
Test: Indica que a dependência estará disponível
apenas na compilação e execução dos testes.
114. Maven
Escopo das dependências
Compile: É o escopo padrão e será utilizado caso a
propriedade não seja definida.
Test: Indica que a dependência estará disponível
apenas na compilação e execução dos testes.
Provided: A dependência estará disponível para a
compilação mas não será empacotada.
115. Maven
Escopo das dependências
Compile: É o escopo padrão e será utilizado caso a
propriedade não seja definida.
Test: Indica que a dependência estará disponível
apenas na compilação e execução dos testes.
Provided: A dependência estará disponível para a
compilação mas não será empacotada.
Runtime: A dependência estará disponível apenas
em execução, não disponível para compilação.
120. Maven
Ciclo de Vida
compile: Compila o código fonte.
121. Maven
Ciclo de Vida
compile: Compila o código fonte.
test: Compila e executa os testes.
122. Maven
Ciclo de Vida
compile: Compila o código fonte.
test: Compila e executa os testes.
package: Empacota o código fonte compilado no
formato especificado.
123. Maven
Ciclo de Vida
compile: Compila o código fonte.
test: Compila e executa os testes.
package: Empacota o código fonte compilado no
formato especificado.
install: Instala o projeto no repositório local
124. Maven
Ciclo de Vida
compile: Compila o código fonte.
test: Compila e executa os testes.
package: Empacota o código fonte compilado no
formato especificado.
install: Instala o projeto no repositório local.
deploy: Instala o projeto no repositório remoto.
125. Maven
Ciclo de Vida
compile: Compila o código fonte.
test: Compila e executa os testes.
package: Empacota o código fonte compilado no
formato especificado.
install: Instala o projeto no repositório local.
deploy: Instala o projeto no repositório remoto.
clean: Apaga o diretório target
126. Maven
Ciclo de Vida
compile: Compila o código fonte.
test: Compila e executa os testes.
package: Empacota o código fonte compilado no
formato especificado.
install: Instala o projeto no repositório local.
deploy: Instala o projeto no repositório remoto.
clean: Apaga o diretório target
site: Gera a documentação do projeto
158. Hudson
Processo de Instalação
Download em http://hudson-ci.org
159. Hudson
Processo de Instalação
Download em http://hudson-ci.org
Realizar o deploy do arquivo hudson.war em seu
container web favorito
160. Hudson
Processo de Instalação
Download em http://hudson-ci.org
Realizar o deploy do arquivo hudson.war em seu
container web favorito
Acessar http://localhost:8080/hudson
179. Sonar
Instalação
Download em
http://www.sonarsource.org/download.html
180. Sonar
Instalação
Download em
http://www.sonarsource.org/download.html
Descompactar no local de sua preferência
181. Sonar
Instalação
Download em
http://www.sonarsource.org/download.html
Descompactar no local de sua preferência
Executar o Sonar.sh ou StartSonar.bat
182. Sonar
Instalação
Download em
http://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
Falammuitoem Agile, mas o queé de fatoé Agile? Porque Agile? O que as empresaspretendemquandobuscam o Agile?
Seráque no fundonãoéisso? Ágil = Fazerrápido?
Normalmente, as empresascomeçamseuprocesso de transformaçãopelaárea de gestão: Scrum. Se possível, nemenvolve o time de desenvolvimento. Étudoumaquestão de gestão de projetos.
Batendonaárvore com a serraelétrica
Existeumagrandetendência de continuarfazendo a mesmacoisa, utilizando post-its e quadrosnaparede
As pessoascomeçampela parte maisidiota! Gestão de Projetos. Existe um grandeproblemaacima, estratégia. E um problemamaioraindaabaixo, software! Seráque o queestá no meioésuficiente?
Toyota Production System
Hanseiéter um comportamentohumilde e o Kaizené a melhoriacontínua
Circulo de Ohno
Processo de desenvolvimentopodeserumagrandefonte de desperdício
No desenvolvimento de software o trabalhobraçalaindaégrande
Tipos de desperdício: Necessário e Puro
Gostaria de um exemplo de desperdíciopuro, ouseja, aquelequevocêpoderiaencontraruma forma de evitar, mas no dia a diaacabanãofazendo?
Quanto tempo poderiasereconomizado se reduzissemos o tempo necessárioparaexecutartodasessasatividades?
Versionamento
A importância do versionamento
Emqualversãoseuprojeto se encontraatualmente?
Estratégias de numeração
A árvore do SVN: Trunk, Tag e Branch
Temos um desafio!
Maven 3
Quempode me dizer o queé?
Maven é umgerenciador de configuração do projeto. Neleestãoconcentradas as informaçõesreferentesaoempacotamento, dependências, testes, perfis e deployment.
Instalaçãoem 4 passos: DDDD
Surgimento da tabelaASCII em 1963. Falar um poucosobre a história
Surgimento da tabelaASCII em 1963. Falar um poucosobre a história
Surgimento da tabelaASCII em 1963. Falar um poucosobre a história
Surgimento da tabelaASCII em 1963. Falar um poucosobre a história
Surgimento da tabelaASCII em 1963. Falar um poucosobre a história
Digite: mvn –version
Criandoseuprimeiroprojeto
Como vocêsfazemparacriar um projeto novo em Java? E se eutedisserque o Maven criaprojetospormeio de um mecanismoautomático?
Archetypes
mvnarchetype:generate
Escopo das dependências
Estrutura de diretórios
Estrutura de diretórios
Como vocêestruturaosdiretórios do seuprojeto? Existemdiferençasdentro de umamesmaequipe?
Project Object Model – POM.xml
Centralizatodas as configurações do projetocomotipo de empacotamento, dependências,compilação e versionamento.
Gestão de dependências
Onde as dependênciasficamarmazenadas?
Conceito de repositório
Repositório Local
Como incluirouatualizardependências no projeto? POM.xml