SlideShare une entreprise Scribd logo
1  sur  90
Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br




              Em 10 minutos!
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.
Processo de desenvolvimento pode ser
     uma fonte de desperdício...
Se sente pesado?
Que tipos de desperdício existem no
seu ambiente de desenvolvimento?
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
Para que serve o Maven?
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
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
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

Contenu connexe

Tendances

Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebElenilson Vieira
 
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
 
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
 
[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
 
[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvemJúlio de Lima
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoiMasters
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
 

Tendances (20)

Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
 
React Native na globo.com
React Native na globo.comReact Native na globo.com
React Native na globo.com
 
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?
 
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
 
[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)
 
Maven - Aula 01
Maven - Aula 01Maven - Aula 01
Maven - Aula 01
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
 
Maven - Aula 02
Maven - Aula 02Maven - Aula 02
Maven - Aula 02
 
[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem
 
Maven - Aula 05
Maven - Aula 05Maven - Aula 05
Maven - Aula 05
 
Maven - Aula 04
Maven  - Aula 04Maven  - Aula 04
Maven - Aula 04
 
Mean Stack
Mean StackMean Stack
Mean Stack
 
Maven - Aula 03
Maven - Aula 03Maven - Aula 03
Maven - Aula 03
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimento
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 
Precisamos falar sobre Gradle
Precisamos falar sobre GradlePrecisamos falar sobre Gradle
Precisamos falar sobre Gradle
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
Grails
GrailsGrails
Grails
 
Maven 2
Maven 2Maven 2
Maven 2
 
Plugin Maven no Eclipse
Plugin Maven no EclipsePlugin Maven no Eclipse
Plugin Maven no Eclipse
 

Similaire à Maven em 10 minutos

Tutorial de instalação do Maven
Tutorial de instalação do MavenTutorial de instalação do Maven
Tutorial de instalação do MavenAllan Alves
 
Projetos Java com Maven
Projetos Java com MavenProjetos Java com Maven
Projetos Java com MavenEdgar Dantas
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
Quick intro to Apache Maven
Quick intro to Apache MavenQuick intro to Apache Maven
Quick intro to Apache MavenInformantTalks
 
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
 
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 Versioning Strategy (VR)
Maven Versioning Strategy (VR)Maven Versioning Strategy (VR)
Maven Versioning Strategy (VR)Marcus Carvalho
 
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
 
Workshop react + adonis.js
Workshop react + adonis.jsWorkshop react + adonis.js
Workshop react + adonis.jsDenis Velrino
 
TDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureTDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureDr. Spock
 
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
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev IntroduçãoMarcio Marinho
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: IntroduçãoJugVale
 

Similaire à Maven em 10 minutos (20)

Tutorial de instalação do Maven
Tutorial de instalação do MavenTutorial de instalação do Maven
Tutorial de instalação do Maven
 
Projetos Java com Maven
Projetos Java com MavenProjetos Java com Maven
Projetos Java com Maven
 
Apache maven
Apache mavenApache maven
Apache maven
 
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
 
Maven
MavenMaven
Maven
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Quick intro to Apache Maven
Quick intro to Apache MavenQuick intro to Apache Maven
Quick intro to Apache Maven
 
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
 
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 Versioning Strategy (VR)
Maven Versioning Strategy (VR)Maven Versioning Strategy (VR)
Maven Versioning Strategy (VR)
 
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
 
Workshop react + adonis.js
Workshop react + adonis.jsWorkshop react + adonis.js
Workshop react + adonis.js
 
TDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureTDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & Azure
 
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
 
Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018
 
Alm open source
Alm open sourceAlm open source
Alm open source
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: Introdução
 

Plus de Rodrigo 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
 
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
 

Plus de Rodrigo Branas (20)

Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
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
 
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
 

Maven em 10 minutos

  • 1. Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br Em 10 minutos!
  • 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.
  • 5. Processo de desenvolvimento pode ser uma fonte de desperdício...
  • 7. Que tipos de desperdício existem no seu ambiente de desenvolvimento?
  • 8. Desperdícios puros Atividades que poderiam ser reduzidas ou eliminadas
  • 9. Desperdícios puros Atividades que poderiam ser reduzidas ou eliminadas • Configurar o projeto em uma maquina nova, em quanto tempo estamos prontos para desenvolver?
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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?
  • 14. 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
  • 15. 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
  • 16. Para que serve o Maven?
  • 18. Maven Gerenciamento de configuração do seu projeto Compilação o código fonte
  • 19. Maven Gerenciamento de configuração do seu projeto Compilação o código fonte Compilar e executar os códigos de testes
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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)
  • 25. 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
  • 26. O céu é o limite!
  • 27. Processo de instalação da ferramenta
  • 29. Maven Processo de Instalação Download em http://maven.apache.org
  • 30. Maven Processo de Instalação Download em http://maven.apache.org Descompactar a ferramenta
  • 31. 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
  • 32. 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
  • 35.
  • 39. Maven Criando seu primeiro projeto mvn archetype:generate
  • 40. Maven Criando seu primeiro projeto mvn archetype:generate Escolhar um tipo de projeto
  • 41. 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
  • 44. 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.
  • 45. 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
  • 46. 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
  • 51. Maven Estrutura de diretórios src/main/java: Onde fica todo o código fonte
  • 52. Maven Estrutura de diretórios src/main/java: Onde fica todo o código fonte src/main/resources: Arquivos de configuração
  • 53. 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
  • 54. 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
  • 55. 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
  • 56. 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
  • 57. 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
  • 58. Coração do projeto – POM.xml
  • 59. Centraliza todas as configurações
  • 60. 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>
  • 62. Aonde ficam armazenadas as dependências?
  • 64.
  • 65. 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>
  • 66. 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>
  • 67. 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>
  • 68. 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>
  • 72. Maven Ciclo de Vida compile: Compila o código fonte.
  • 73. Maven Ciclo de Vida compile: Compila o código fonte. test: Compila e executa os testes.
  • 74. 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.
  • 75. 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
  • 76. 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.
  • 77. 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
  • 78. 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
  • 81.
  • 82. 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>
  • 83. 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>
  • 84. 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>
  • 85. 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>
  • 86. 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>
  • 87. 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>
  • 88. 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>
  • 89. Goals

Notes de l'éditeur

  1. Maven 3
  2. Processo de desenvolvimentopodeserumagrandefonte de desperdício
  3. Velocidadeaumentaconformeosdesperdíciosvãosendoeliminados
  4. Quempode me dizer o queé?
  5. Quempode me dizer o queé?
  6. Instalaçãoem 4 passos: DDDD
  7. Surgimento da tabelaASCII em 1963. Falar um poucosobre a história
  8. Surgimento da tabelaASCII em 1963. Falar um poucosobre a história
  9. Surgimento da tabelaASCII em 1963. Falar um poucosobre a história
  10. Surgimento da tabelaASCII em 1963. Falar um poucosobre a história
  11. Surgimento da tabelaASCII em 1963. Falar um poucosobre a história
  12. Digite: mvn –version
  13. Criandoseuprimeiroprojeto
  14. Como vocêsfazemparacriar um projeto novo em Java? E se eutedisserque o Maven criaprojetospormeio de um mecanismoautomático?
  15. Archetypes
  16. mvnarchetype:generate
  17. Escopo das dependências
  18. Estrutura de diretórios
  19. Estrutura de diretórios
  20. Project Object Model – POM.xml
  21. Centralizatodas as configurações do projetocomotipo de empacotamento, dependências,compilação e versionamento.
  22. Gestão de dependências
  23. Onde as dependênciasficamarmazenadas?
  24. Conceito de repositório
  25. Repositório Local
  26. Escopo das dependências
  27. Ciclo de vida
  28. Ciclo de vida
  29. Ciclo de vida
  30. Ciclo de vida
  31. Ciclo de vida
  32. Ciclo de vida