SlideShare uma empresa Scribd logo
1 de 190
Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br




Descobrindo uma maneira mais ágil de
desenvolver software com Maven 3, Sonar
                          e Hudson
http://www.slideshare.net/rodrigobranas
@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
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.
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 puros
Atividades que poderiam ser reduzidas ou eliminadas
Desperdícios puros
Atividades que poderiam ser reduzidas ou eliminadas

• Configurar o projeto em uma maquina nova, em
  quanto tempo estamos prontos para desenvolver?
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
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
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
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?
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
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
Pair Programming
Piloto + Copiloto
Será que a velocidade do projeto
         será reduzida?
Onde está o gargalo no
desenvolvimento 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 na produtividade
É 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 um
intervalo 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
Maven
Gerenciamento de configuração do seu projeto
Maven
Gerenciamento de configuração do seu projeto

         Compilação o código fonte
Maven
Gerenciamento de configuração do seu projeto

        Compilação o código fonte
  Compilar e executar os códigos de testes
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
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
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
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
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)
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
O céu é o limite!
Processo de instalação da ferramenta
Maven
Processo de Instalação
Maven
       Processo de Instalação

Download em http://maven.apache.org
Maven
       Processo de Instalação

Download em http://maven.apache.org
    Descompactar a ferramenta
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
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
mvn --version
Criando seu primeiro projeto
Archetypes
mvn archetype:generate
Maven
Criando seu primeiro projeto
Maven
Criando seu primeiro projeto

  mvn archetype:generate
Maven
Criando seu primeiro projeto

 mvn archetype:generate
Escolhar um tipo de projeto
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
Quem é você?
Maven
3 informações fundamentais
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.
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
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
mvn eclipse:eclipse
Estrutura de diretórios
Promovendo a padronização
Maven
Estrutura de diretórios
Maven
           Estrutura de diretórios

src/main/java: Onde fica todo o código fonte
Maven
           Estrutura de diretórios

src/main/java: Onde fica todo o código fonte
src/main/resources: Arquivos de configuração
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
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
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
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
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
Coração do projeto – POM.xml
Centraliza todas as configurações
Arquivo pom.xml

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>
Gestão de Dependências
Aonde ficam armazenadas as
      dependências?
Entendendo os repositórios
Quero incluir uma nova
dependência no projeto
Arquivo pom.xml

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>
Arquivo pom.xml

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.    <dependencies>
7.    </dependencies>
8.   </project>
Arquivo pom.xml

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.     <dependencies>
7.      <dependency>
8.      </dependency>
9.     </dependencies>
10.   </project>
Arquivo pom.xml

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.     <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>
mvn eclipse:eclipse
Escopo das dependências
Maven
Escopo das dependências
Maven
         Escopo das dependências

Compile: É o escopo padrão e será utilizado caso a
propriedade não seja definida.
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.
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.
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.
Arquivo pom.xml
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.     <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>
Arquivo pom.xml
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.     <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>
Ciclo de Vida
Maven
Ciclo de Vida
Maven
               Ciclo de Vida

compile: Compila o código fonte.
Maven
               Ciclo de Vida

compile: Compila o código fonte.
test: Compila e executa os testes.
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.
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
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.
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
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
mvn clean package
Plugins
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>
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>
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>
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>
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>
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>
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>
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>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>
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>
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>
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>
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>
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>
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>
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>
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>
mvn package jboss:hard-deploy -P branas
Integração Contínua
Evitando a síndrome do...
Hudson
Processo de instalação da ferramenta
Hudson
Processo de Instalação
Hudson
     Processo de Instalação

Download em http://hudson-ci.org
Hudson
            Processo de Instalação

       Download em http://hudson-ci.org
Realizar o deploy do arquivo hudson.war em seu
             container web favorito
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
Hudson
Criando uma tarefa
Hudson
  Criando uma tarefa

Clicar em “Nova Tarefa”
Hudson
  Criando uma tarefa

Clicar 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
Sonar
Instalação
Sonar
               Instalação

              Download em
http://www.sonarsource.org/download.html
Sonar
               Instalação

              Download em
http://www.sonarsource.org/download.html
 Descompactar no local de sua preferência
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
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
Métricas
Sonar
Métricas
Sonar
     Métricas

Cobertura de testes
Sonar
     Métricas

Cobertura de testes
  Complexidade
Sonar
     Métricas

Cobertura de testes
  Complexidade
   Duplicações
Sonar
     Métricas

Cobertura de testes
  Complexidade
   Duplicações
   Comentários
Sonar
     Métricas

Cobertura de testes
  Complexidade
   Duplicações
   Comentários
    Violações
Obrigado!
www.slideshare.net/rodrigobranas

Mais conteúdo relacionado

Mais procurados

[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)Júlio de Lima
 
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...iMasters
 
Testando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaTestando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaHenrique Limas
 
DevCommerce Conference 2016: SecDevOps – Testes contínuos de segurança em apl...
DevCommerce Conference 2016: SecDevOps – Testes contínuos de segurança em apl...DevCommerce Conference 2016: SecDevOps – Testes contínuos de segurança em apl...
DevCommerce Conference 2016: SecDevOps – Testes contínuos de segurança em apl...iMasters
 
Mini curso: Ionic Framework
Mini curso: Ionic FrameworkMini curso: Ionic Framework
Mini curso: Ionic FrameworkLoiane Groner
 
Usando containers com auto-escala de testes
Usando containers com auto-escala de testesUsando containers com auto-escala de testes
Usando containers com auto-escala de testesElias Nogueira
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsVinicius Reis
 
TDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.io
TDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.ioTDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.io
TDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.iotdc-globalcode
 
Introdução ao Asp.NET MVC
Introdução ao Asp.NET MVCIntrodução ao Asp.NET MVC
Introdução ao Asp.NET MVCBenicio Ávila
 
Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...
Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...
Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...Renato Groff
 
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoIonic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoAlamo Saravali
 
Laravel 5: Entenda o ambiente e a estrutura MVC
 Laravel 5: Entenda o ambiente e a estrutura MVC Laravel 5: Entenda o ambiente e a estrutura MVC
Laravel 5: Entenda o ambiente e a estrutura MVCMichael Douglas
 

Mais procurados (20)

[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
 
O Futuro do ASP.NET
O Futuro do ASP.NETO Futuro do ASP.NET
O Futuro do ASP.NET
 
Apresentação maven
Apresentação mavenApresentação maven
Apresentação maven
 
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
 
Testando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaTestando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o Karma
 
DevCommerce Conference 2016: SecDevOps – Testes contínuos de segurança em apl...
DevCommerce Conference 2016: SecDevOps – Testes contínuos de segurança em apl...DevCommerce Conference 2016: SecDevOps – Testes contínuos de segurança em apl...
DevCommerce Conference 2016: SecDevOps – Testes contínuos de segurança em apl...
 
Mini curso: Ionic Framework
Mini curso: Ionic FrameworkMini curso: Ionic Framework
Mini curso: Ionic Framework
 
Usando containers com auto-escala de testes
Usando containers com auto-escala de testesUsando containers com auto-escala de testes
Usando containers com auto-escala de testes
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
 
Introdução ao maven
Introdução ao mavenIntrodução ao maven
Introdução ao maven
 
Infrastructure Testing
Infrastructure TestingInfrastructure Testing
Infrastructure Testing
 
Aula maven
Aula   mavenAula   maven
Aula maven
 
TDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.io
TDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.ioTDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.io
TDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.io
 
Introdução ao Asp.NET MVC
Introdução ao Asp.NET MVCIntrodução ao Asp.NET MVC
Introdução ao Asp.NET MVC
 
Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...
Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...
Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...
 
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoIonic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
 
Apresentacao de Introdução ao Apache Maven
Apresentacao de Introdução ao Apache MavenApresentacao de Introdução ao Apache Maven
Apresentacao de Introdução ao Apache Maven
 
Angular 2
Angular 2Angular 2
Angular 2
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
 
Laravel 5: Entenda o ambiente e a estrutura MVC
 Laravel 5: Entenda o ambiente e a estrutura MVC Laravel 5: Entenda o ambiente e a estrutura MVC
Laravel 5: Entenda o ambiente e a estrutura MVC
 

Destaque

Projetos Java com Maven
Projetos Java com MavenProjetos Java com Maven
Projetos Java com MavenEdgar Dantas
 
Validando Formulários com AngularJS
Validando Formulários com AngularJSValidando Formulários com AngularJS
Validando Formulários com AngularJSRodrigo Branas
 
Introdução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webIntrodução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webRodrigo Branas
 
Utilizando diretivas com AngularJS
Utilizando diretivas com AngularJSUtilizando diretivas com AngularJS
Utilizando diretivas com AngularJSRodrigo Branas
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Rodrigo Branas
 
HTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJSHTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJSRodrigo Branas
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJSRodrigo Branas
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptRodrigo Branas
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasRodrigo Branas
 

Destaque (12)

Projetos Java com Maven
Projetos Java com MavenProjetos Java com Maven
Projetos Java com Maven
 
Testes Automatizados
Testes AutomatizadosTestes Automatizados
Testes Automatizados
 
Validando Formulários com AngularJS
Validando Formulários com AngularJSValidando Formulários com AngularJS
Validando Formulários com AngularJS
 
Introdução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webIntrodução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações web
 
Utilizando diretivas com AngularJS
Utilizando diretivas com AngularJSUtilizando diretivas com AngularJS
Utilizando diretivas com AngularJS
 
Sistema Toyota de Produção
Sistema Toyota de ProduçãoSistema Toyota de Produção
Sistema Toyota de Produção
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
 
HTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJSHTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJS
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJS
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 
Maven Introduction
Maven IntroductionMaven Introduction
Maven Introduction
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
 

Semelhante a Maven 3, Sonar e Hudson

Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAmazon Web Services LATAM
 
Tutorial de instalação do Maven
Tutorial de instalação do MavenTutorial de instalação do Maven
Tutorial de instalação do MavenAllan Alves
 
Maven Versioning Strategy (VR)
Maven Versioning Strategy (VR)Maven Versioning Strategy (VR)
Maven Versioning Strategy (VR)Marcus Carvalho
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasDevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasAmazon Web Services LATAM
 
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & HudsonSuporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & HudsonRicardo Ferreira
 
Maven e Nexus. O que são essas ferramentas?
Maven e Nexus. O que são essas ferramentas?Maven e Nexus. O que são essas ferramentas?
Maven e Nexus. O que são essas ferramentas?Jocsa Rosendo
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 
Jenkins - livre-se da parte chata do Java
Jenkins - livre-se da parte chata do JavaJenkins - livre-se da parte chata do Java
Jenkins - livre-se da parte chata do JavaFernando Boaglio
 
Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Globalcode
 
Introdução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceIntrodução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceGlobalcode
 
Automação do ciclo de vida de software para Java
Automação do ciclo de vida de software para JavaAutomação do ciclo de vida de software para Java
Automação do ciclo de vida de software para JavaRafael Souza
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAmazon Web Services LATAM
 

Semelhante a Maven 3, Sonar e Hudson (20)

Maven 2
Maven 2Maven 2
Maven 2
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
 
Continuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na NuvemContinuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na Nuvem
 
Apache maven
Apache mavenApache maven
Apache maven
 
Tutorial de instalação do Maven
Tutorial de instalação do MavenTutorial de instalação do Maven
Tutorial de instalação do Maven
 
Maven Versioning Strategy (VR)
Maven Versioning Strategy (VR)Maven Versioning Strategy (VR)
Maven Versioning Strategy (VR)
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasDevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
 
Introdução a projetos baseados em apache maven
Introdução a projetos baseados em apache mavenIntrodução a projetos baseados em apache maven
Introdução a projetos baseados em apache maven
 
Introdução ao Maven
Introdução ao MavenIntrodução ao Maven
Introdução ao Maven
 
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & HudsonSuporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
 
Maven e Nexus. O que são essas ferramentas?
Maven e Nexus. O que são essas ferramentas?Maven e Nexus. O que são essas ferramentas?
Maven e Nexus. O que são essas ferramentas?
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Jenkins - livre-se da parte chata do Java
Jenkins - livre-se da parte chata do JavaJenkins - livre-se da parte chata do Java
Jenkins - livre-se da parte chata do Java
 
Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!
 
Alm open source
Alm open sourceAlm open source
Alm open source
 
Introdução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceIntrodução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open Source
 
Automação do ciclo de vida de software para Java
Automação do ciclo de vida de software para JavaAutomação do ciclo de vida de software para Java
Automação do ciclo de vida de software para Java
 
Maven
MavenMaven
Maven
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWS
 

Mais de Rodrigo Branas

Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasRodrigo Branas
 
Node.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo BranasNode.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo BranasRodrigo Branas
 
Node.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo BranasNode.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo BranasRodrigo Branas
 
Node.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo BranasNode.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo BranasRodrigo Branas
 
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo BranasNode.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo BranasRodrigo Branas
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasRodrigo Branas
 
#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisasRodrigo Branas
 
#1 - Git - Introdução
#1 - Git - Introdução#1 - Git - Introdução
#1 - Git - IntroduçãoRodrigo Branas
 
#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remotoRodrigo Branas
 
#3 - Git - Branching e Merging
#3 - Git - Branching e Merging#3 - Git - Branching e Merging
#3 - Git - Branching e MergingRodrigo Branas
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJSRodrigo Branas
 
JavaScript - Expressões Regulares
JavaScript - Expressões RegularesJavaScript - Expressões Regulares
JavaScript - Expressões RegularesRodrigo Branas
 
Automação de Testes com AngularJS
Automação de Testes com AngularJSAutomação de Testes com AngularJS
Automação de Testes com AngularJSRodrigo Branas
 
HTTP Interceptors com AngularJS
HTTP Interceptors com AngularJSHTTP Interceptors com AngularJS
HTTP Interceptors com AngularJSRodrigo Branas
 
Criando serviços com AngularJS
Criando serviços com AngularJSCriando serviços com AngularJS
Criando serviços com AngularJSRodrigo Branas
 

Mais de Rodrigo Branas (20)

Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo Branas
 
Node.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo BranasNode.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo Branas
 
Node.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo BranasNode.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo Branas
 
Node.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo BranasNode.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo Branas
 
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo BranasNode.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas
 
#1 - Git - Introdução
#1 - Git - Introdução#1 - Git - Introdução
#1 - Git - Introdução
 
#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto
 
#4 - Git - Stash
#4 - Git - Stash#4 - Git - Stash
#4 - Git - Stash
 
#3 - Git - Branching e Merging
#3 - Git - Branching e Merging#3 - Git - Branching e Merging
#3 - Git - Branching e Merging
 
#2 - Git - DAG
#2 - Git - DAG#2 - Git - DAG
#2 - Git - DAG
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJS
 
JavaScript - Date
JavaScript - DateJavaScript - Date
JavaScript - Date
 
JavaScript - Expressões Regulares
JavaScript - Expressões RegularesJavaScript - Expressões Regulares
JavaScript - Expressões Regulares
 
Automação de Testes com AngularJS
Automação de Testes com AngularJSAutomação de Testes com AngularJS
Automação de Testes com AngularJS
 
Scope AngularJS
Scope AngularJSScope AngularJS
Scope AngularJS
 
HTTP Interceptors com AngularJS
HTTP Interceptors com AngularJSHTTP Interceptors com AngularJS
HTTP Interceptors com AngularJS
 
Criando serviços com AngularJS
Criando serviços com AngularJSCriando serviços com AngularJS
Criando serviços com AngularJS
 

Maven 3, Sonar e Hudson

  • 1. Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br Descobrindo uma maneira mais ágil de desenvolver software com Maven 3, Sonar e Hudson
  • 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.
  • 6. No fundo não é isso que se espera?
  • 7. Só Scrum não basta...
  • 8.
  • 9.
  • 10.
  • 11.
  • 14. Processo de desenvolvimento pode ser uma fonte de desperdício...
  • 16. Vamos diferenciar desperdício necessário e puro
  • 17. Alguém tem algum exemplo?
  • 19. Desperdícios puros Atividades que poderiam ser reduzidas ou eliminadas
  • 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
  • 27.
  • 30. Será que a velocidade do projeto será reduzida?
  • 31. Onde está o gargalo no desenvolvimento de software?
  • 33. Vantagens do Pair Programming: Código de melhor qualidade
  • 34. Vantagens do Pair Programming: Código de melhor qualidade Aumento do foco
  • 35. Vantagens do Pair Programming: Código de melhor qualidade Aumento do foco Disseminação de conhecimento na equipe
  • 36. Vantagens do Pair Programming: Código de melhor qualidade Aumento do foco Disseminação de conhecimento na equipe Melhora na produtividade
  • 37. É obrigatório trabalhar em par durante todo o dia?
  • 40. Acerte o seu Pomodoro para 25 minutos
  • 41. Trabalhe até o fim do Pomodoro
  • 42. Faça um intervalo de 5 minutos
  • 43. A cada 4 Pomodoros faça um intervalo longo de 15 a 20 minutos
  • 44. A importância da rotação dos pares
  • 45. Monte um ambiente híbrido para facilitar o pair programming!
  • 47. Deu problema! Volta a versão...
  • 48. Em que versão seu projeto está atualmente?
  • 53.
  • 56. Maven Gerenciamento de configuração do seu projeto Compilação o código fonte
  • 57. Maven Gerenciamento de configuração do seu projeto Compilação o código fonte Compilar e executar os códigos de testes
  • 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
  • 64. O céu é o limite!
  • 65. Processo de instalação da ferramenta
  • 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
  • 73.
  • 77. Maven Criando seu primeiro projeto mvn archetype:generate
  • 78. Maven Criando seu primeiro projeto mvn archetype:generate Escolhar um tipo de projeto
  • 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
  • 88.
  • 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
  • 97. Coração do projeto – POM.xml
  • 98. Centraliza todas as configurações
  • 99. Arquivo pom.xml 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>
  • 101. Aonde ficam armazenadas as dependências?
  • 103.
  • 104. Quero incluir uma nova dependência no projeto
  • 105. Arquivo pom.xml 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>
  • 106. Arquivo pom.xml 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. <dependencies> 7. </dependencies> 8. </project>
  • 107. Arquivo pom.xml 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. <dependencies> 7. <dependency> 8. </dependency> 9. </dependencies> 10. </project>
  • 108. Arquivo pom.xml 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. <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>
  • 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.
  • 116. Arquivo pom.xml 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. <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>
  • 117. Arquivo pom.xml 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. <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>
  • 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
  • 129.
  • 130. 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>
  • 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. </build> 8. </project>
  • 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. </plugins> 9. </build> 10. </project>
  • 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. </plugin> 10. </plugins> 11. </build> 12. </project>
  • 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. <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>
  • 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. <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>
  • 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. <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>
  • 137. Goals
  • 140. Chaveamento de propriedades dentro do POM.xml
  • 141. 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>
  • 142. 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>
  • 143. 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>
  • 144. 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>
  • 145. 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>
  • 146. 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>
  • 147. 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>
  • 148. 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>
  • 149. 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>
  • 152.
  • 154.
  • 155. Hudson
  • 156. Processo de instalação da ferramenta
  • 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
  • 161.
  • 162.
  • 163.
  • 165. Hudson Criando uma tarefa Clicar em “Nova Tarefa”
  • 166.
  • 167. Hudson Criando uma tarefa Clicar em “Nova Tarefa”
  • 168. Hudson Criando uma tarefa Clicar em “Nova Tarefa” Preencher o nome da tarefa
  • 169.
  • 170. Hudson Criando uma tarefa Clicar em “Nova Tarefa” Preencher o nome da tarefa
  • 171. Hudson Criando uma tarefa Clicar em “Nova Tarefa” Preencher o nome da tarefa Configurar a tarefa
  • 172.
  • 173.
  • 174. Sonar
  • 175.
  • 177. Processo de instalação da ferramenta
  • 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
  • 185. Sonar Métricas Cobertura de testes
  • 186. Sonar Métricas Cobertura de testes Complexidade
  • 187. Sonar Métricas Cobertura de testes Complexidade Duplicações
  • 188. Sonar Métricas Cobertura de testes Complexidade Duplicações Comentários
  • 189. Sonar Métricas Cobertura de testes Complexidade Duplicações Comentários Violações

Notas do Editor

  1. Desmistificando o Charset
  2. Palestralivre – Podemcopiarem http://www.slideshare.net/rodrigobranas
  3. Falammuitoem Agile, mas o queé de fatoé Agile? Porque Agile? O que as empresaspretendemquandobuscam o Agile?
  4. Seráque no fundonãoéisso? Ágil = Fazerrápido?
  5. 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.
  6. Batendonaárvore com a serraelétrica
  7. Existeumagrandetendência de continuarfazendo a mesmacoisa, utilizando post-its e quadrosnaparede
  8. 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?
  9. Toyota Production System
  10. Hanseiéter um comportamentohumilde e o Kaizené a melhoriacontínua
  11. Circulo de Ohno
  12. Processo de desenvolvimentopodeserumagrandefonte de desperdício
  13. No desenvolvimento de software o trabalhobraçalaindaégrande
  14. Tipos de desperdício: Necessário e Puro
  15. Gostaria de um exemplo de desperdíciopuro, ouseja, aquelequevocêpoderiaencontraruma forma de evitar, mas no dia a diaacabanãofazendo?
  16. Velocidadeaumentaconformeosdesperdíciosvãosendoeliminados
  17. Quanto tempo poderiasereconomizado se reduzissemos o tempo necessárioparaexecutartodasessasatividades?
  18. Versionamento
  19. A importância do versionamento
  20. Emqualversãoseuprojeto se encontraatualmente?
  21. Estratégias de numeração
  22. A árvore do SVN: Trunk, Tag e Branch
  23. Temos um desafio!
  24. Maven 3
  25. Quempode me dizer o queé?
  26. Maven é umgerenciador de configuração do projeto. Neleestãoconcentradas as informaçõesreferentesaoempacotamento, dependências, testes, perfis e deployment.
  27. Instalaçãoem 4 passos: DDDD
  28. Surgimento da tabelaASCII em 1963. Falar um poucosobre a história
  29. Surgimento da tabelaASCII em 1963. Falar um poucosobre a história
  30. Surgimento da tabelaASCII em 1963. Falar um poucosobre a história
  31. Surgimento da tabelaASCII em 1963. Falar um poucosobre a história
  32. Surgimento da tabelaASCII em 1963. Falar um poucosobre a história
  33. Digite: mvn –version
  34. Criandoseuprimeiroprojeto
  35. Como vocêsfazemparacriar um projeto novo em Java? E se eutedisserque o Maven criaprojetospormeio de um mecanismoautomático?
  36. Archetypes
  37. mvnarchetype:generate
  38. Escopo das dependências
  39. Estrutura de diretórios
  40. Estrutura de diretórios
  41. Como vocêestruturaosdiretórios do seuprojeto? Existemdiferençasdentro de umamesmaequipe?
  42. Project Object Model – POM.xml
  43. Centralizatodas as configurações do projetocomotipo de empacotamento, dependências,compilação e versionamento.
  44. Gestão de dependências
  45. Onde as dependênciasficamarmazenadas?
  46. Conceito de repositório
  47. Repositório Local
  48. Como incluirouatualizardependências no projeto? POM.xml
  49. Escopo das dependências
  50. Escopo das dependências
  51. Ciclo de vida
  52. Ciclo de vida
  53. Ciclo de vida
  54. Ciclo de vida
  55. Ciclo de vida
  56. Ciclo de vida
  57. Ciclo de vida
  58. Ciclo de vida
  59. Ciclo de vida
  60. Quemutiliza?
  61. Instalaçãoem 4 passos: DDDD
  62. Sonar
  63. Qualé o problema com a qualidade do código?
  64. Ciclo de vida
  65. Instalaçãoem 4 passos: DDDD
  66. Instalaçãoem 4 passos: DDDD