By Henrique Smoco
 Contextualizando
 O que é Maven
 Maven x Ant ou Gradle
 Estrutura de Diretórios
 Ciclo de Vida do Build
 POM
 Dependências
 Instalação
 Demos
Agenda
 Tem que ser reproduzível
 Tem que gerar o artefato final (ear, war, jar, etc)
 Tem que ser fácil de manter e executar
 Tem que ser bem documentado
Build Automatizado
 Ferramentas de Script
 Ant
 Rake (Baseado em Ruby)
 Gradle (Baseado em Groovy)
 E outras...
 Ferramentas orientadas a artefato
 Maven
 Criação Pacotes Debian
Tipos de Ferramentas
 É uma ferramenta de Build,
 De gerenciamento de dependências,
 De documentação
O que é Maven?
 Facilitar o processo de build
 Fornecer um sistema de build uniforme
 Fornecer informações sobre a qualidade do projeto
 Fornecer orientações de melhores práticas de desenvolvimento
 Permitir a migração transparente para novas funcionalidades
Objetivos do Maven
 Tem uma estrutura de diretórios pré definida
 Código
 Testes
 Documentação
 Baseada em objetivos (Goals)
 compile
 test
 package
 install
 deploy
Convenção sobre Configuração
 Comparado com Ant
 Padroniza estrutura do projeto
 Fornece gerenciamento de dependências
 Toda a funcionalidade para build do projeto integrada
 Relatórios e documentação integrados
 Setup fácil de projetos multiplataforma
 Comparado com Gradle
 Tem um arquivo de projeto mais verboso
 Pouco a nenhum conhecimento de programação requerido
 Grande suporte da comunidade
 Melhor suporte da IDE (Eclipse tem melhorado)
Maven x Ant ou Gradle
Comparando: Script Ant
Comparando: Script Maven
Estrutura de Diretórios
Estrutura de Diretórios Multi Modulo
Ciclo de Vida do Build
 validate
 compile
 test
 package
 integration-test
 verify
 install
 deploy
Ciclo de Vida do Build
 validate - Valida se projeto está OK e tem toda informação disponível
 compile - Compila os fontes
 test - Roda os testes (Não devem precisar de empacotamento ou
deploy)
 package - Cria o artefato a partir do código compilado (ex. JAR).
 integration-test - Processa e faz deploy do artefato, se necessário, num
ambiente onde os testes de integração podem rodar
 verify - Roda qualquer verificação para validar critérios de qualidade
 install - Instala o artefato no repositório local
 deploy - Feito num ambiente de integração ou release, copia o artefato
final para o repositorio remoto para uso dos outros desenvolvedores
 Equivalente ao build.xml do Ant
 Apenas um POM por módulo
 Contém a Identificação do projeto, dependências, etc
POM
<groupId>br.com.meuexemplo</groupId>
<artifactId>agenda</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
 Resolução de dependências
 http://mvnrepository.com/
Dependências
 Escopo das dependências
 compile
 provided
 runtime
 test
 Declarando no POM:
Dependências
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
 Javadoc
 CheckStyle
 Cobertura
 PMD
 Weblogic Deployer
 Changelog/Changes
Alguns Plugins Maven
 Acesse http://maven.apache.org/
 Faça o download (ex.: apache-maven-3.3.3-bin.zip)
 Extraia o arquivo baixado
 Configure a variável de ambiente M2_HOME apontando para onde
extraiu o arquivo
 Adicione a pasta bin do Maven no path
 Feito
 Para testar:
 mvn -h
Instalação
Introdução ao Maven

Introdução ao Maven

  • 1.
  • 2.
     Contextualizando  Oque é Maven  Maven x Ant ou Gradle  Estrutura de Diretórios  Ciclo de Vida do Build  POM  Dependências  Instalação  Demos Agenda
  • 3.
     Tem queser reproduzível  Tem que gerar o artefato final (ear, war, jar, etc)  Tem que ser fácil de manter e executar  Tem que ser bem documentado Build Automatizado
  • 4.
     Ferramentas deScript  Ant  Rake (Baseado em Ruby)  Gradle (Baseado em Groovy)  E outras...  Ferramentas orientadas a artefato  Maven  Criação Pacotes Debian Tipos de Ferramentas
  • 5.
     É umaferramenta de Build,  De gerenciamento de dependências,  De documentação O que é Maven?
  • 6.
     Facilitar oprocesso de build  Fornecer um sistema de build uniforme  Fornecer informações sobre a qualidade do projeto  Fornecer orientações de melhores práticas de desenvolvimento  Permitir a migração transparente para novas funcionalidades Objetivos do Maven
  • 7.
     Tem umaestrutura de diretórios pré definida  Código  Testes  Documentação  Baseada em objetivos (Goals)  compile  test  package  install  deploy Convenção sobre Configuração
  • 8.
     Comparado comAnt  Padroniza estrutura do projeto  Fornece gerenciamento de dependências  Toda a funcionalidade para build do projeto integrada  Relatórios e documentação integrados  Setup fácil de projetos multiplataforma  Comparado com Gradle  Tem um arquivo de projeto mais verboso  Pouco a nenhum conhecimento de programação requerido  Grande suporte da comunidade  Melhor suporte da IDE (Eclipse tem melhorado) Maven x Ant ou Gradle
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
    Ciclo de Vidado Build  validate  compile  test  package  integration-test  verify  install  deploy
  • 14.
    Ciclo de Vidado Build  validate - Valida se projeto está OK e tem toda informação disponível  compile - Compila os fontes  test - Roda os testes (Não devem precisar de empacotamento ou deploy)  package - Cria o artefato a partir do código compilado (ex. JAR).  integration-test - Processa e faz deploy do artefato, se necessário, num ambiente onde os testes de integração podem rodar  verify - Roda qualquer verificação para validar critérios de qualidade  install - Instala o artefato no repositório local  deploy - Feito num ambiente de integração ou release, copia o artefato final para o repositorio remoto para uso dos outros desenvolvedores
  • 15.
     Equivalente aobuild.xml do Ant  Apenas um POM por módulo  Contém a Identificação do projeto, dependências, etc POM <groupId>br.com.meuexemplo</groupId> <artifactId>agenda</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging>
  • 16.
     Resolução dedependências  http://mvnrepository.com/ Dependências
  • 17.
     Escopo dasdependências  compile  provided  runtime  test  Declarando no POM: Dependências <dependencies> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>6.0</version> <scope>provided</scope> </dependency> </dependencies>
  • 18.
     Javadoc  CheckStyle Cobertura  PMD  Weblogic Deployer  Changelog/Changes Alguns Plugins Maven
  • 19.
     Acesse http://maven.apache.org/ Faça o download (ex.: apache-maven-3.3.3-bin.zip)  Extraia o arquivo baixado  Configure a variável de ambiente M2_HOME apontando para onde extraiu o arquivo  Adicione a pasta bin do Maven no path  Feito  Para testar:  mvn -h Instalação