automação de build com apache maven [email protected]

39
Automação de Build com Apache Maven [email protected]

Upload: aurelia-de-figueiredo-moreira

Post on 07-Apr-2016

230 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Automação de Build com Apache Maven hednilson@gmail.com

Automação de Buildcom Apache Maven

[email protected]

Page 2: Automação de Build com Apache Maven hednilson@gmail.com

Objetivo• Demonstrar o uso da ferramenta Maven no desenvolvimento

de aplicações Java

Page 3: Automação de Build com Apache Maven hednilson@gmail.com

Agenda• Introdução• Instalação• Configuração• Primeiro projeto• Arquitetura• Integração com Eclipse• Projeto de uma biblioteca (JAR)• Projeto de uma aplicação WAR• Projeto de um componente EJB• Projeto de uma aplicação EAR• Projeto de uma aplicação desktop

Page 4: Automação de Build com Apache Maven hednilson@gmail.com

Tópicos adicionais• Configurações de rede• Criação de modelos (archetypes)• Criação de distribuições (assembly)• Versionamento

Page 5: Automação de Build com Apache Maven hednilson@gmail.com

Agenda• Introdução• Instalação• Configuração• Primeiro projeto• Arquitetura• Integração com Eclipse• Projeto de uma biblioteca (JAR)• Projeto de uma aplicação WAR• Projeto de um componente EJB• Projeto de uma aplicação EAR• Projeto de uma aplicação desktop

Page 6: Automação de Build com Apache Maven hednilson@gmail.com

Introdução• O que é o Maven?• Ferramenta de automação de build• Gerencia o processo de desenvolvimento de produtos (artefatos)

em Java (preferencialmente)• Abordagem declarativa (diferentemente do Ant)• Convenção sobre Configuração• Desenvolvido pelo grupo Apache (suporte do projeto Avalon)

Page 7: Automação de Build com Apache Maven hednilson@gmail.com

Introdução• Por que usar o Maven?• Padronização do processo de desenvolvimento• Gerenciamento de dependências (bibliotecas)• Compartilhamento de componentes

• Diferentemente de compartilhamento de código/build• Extensível através de plugins• Testes facilitados• Documentação facilitada• Fácil integração com ferramentas de integração contínua e

monitoramento da qualidade do código• Integração com IDE

Page 8: Automação de Build com Apache Maven hednilson@gmail.com

Agenda• Introdução• Instalação• Configuração• Primeiro projeto• Arquitetura• Integração com Eclipse• Projeto de uma biblioteca (JAR)• Projeto de uma aplicação WAR• Projeto de um componente EJB• Projeto de uma aplicação EAR• Projeto de uma aplicação desktop

Page 9: Automação de Build com Apache Maven hednilson@gmail.com

Instalação• Baixar distribuição• http://maven.apache.org/download.html

• Descompactar• Configurar variáveis de ambiente• Windows

• M2_HOME=C:\apache-maven-3.0.4 (opcional)• JAVA_HOME=<pasta de instalação do JDK>• PATH=%M2_HOME%\bin;%JAVA_HOME%\bin;%PATH%

• Testar instalação• PROMPT> mvn -version

Apache Maven 3.0.4 (r1232337; 2012-01-17 06:44:56-0200)Maven home: C:\Program Files\Java\apache-maven-3.0.4Java version: 1.7.0_03, vendor: Oracle CorporationJava home: C:\Program Files\Java\jdk1.7.0_03-x64\jreDefault locale: pt_BR, platform encoding: Cp1252OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"

Page 10: Automação de Build com Apache Maven hednilson@gmail.com

Agenda• Introdução• Instalação• Configuração• Primeiro projeto• Arquitetura• Integração com Eclipse• Projeto de uma biblioteca (JAR)• Projeto de uma aplicação WAR• Projeto de um componente EJB• Projeto de uma aplicação EAR• Projeto de uma aplicação desktop

Page 11: Automação de Build com Apache Maven hednilson@gmail.com

Configuração

Configuração global Configuração

de usuário

Page 12: Automação de Build com Apache Maven hednilson@gmail.com

Configuração• settings.xml• Proxies, Autenticação, Repositórios, Mirrors, Profiles, ...

Page 13: Automação de Build com Apache Maven hednilson@gmail.com

Agenda• Introdução• Instalação• Configuração• Primeiro projeto• Arquitetura• Integração com Eclipse• Projeto de uma biblioteca (JAR)• Projeto de uma aplicação WAR• Projeto de um componente EJB• Projeto de uma aplicação EAR• Projeto de uma aplicação desktop

Page 14: Automação de Build com Apache Maven hednilson@gmail.com

Primeiro projeto• PROMPT> mvn archetype:create -DgroupId=curso.maven -DartifactId=primeiro-projeto[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building Maven Stub Project (No POM) 1[INFO] ------------------------------------------------------------------------[INFO][INFO] --- maven-archetype-plugin:2.2:create (default-cli) @ standalone-pom ---[WARNING] This goal is deprecated. Please use mvn archetype:generate instead[INFO] Defaulting package to group ID: curso.maven[INFO] ----------------------------------------------------------------------------[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:RELEASE[INFO] ----------------------------------------------------------------------------[INFO] Parameter: groupId, Value: curso.maven[INFO] Parameter: packageName, Value: curso.maven[INFO] Parameter: package, Value: curso.maven[INFO] Parameter: artifactId, Value: primeiro-projeto[INFO] Parameter: basedir, Value: C:\Workspaces\projetos[INFO] Parameter: version, Value: 1.0-SNAPSHOT[INFO] project created from Old (1.x) Archetype in dir: C:\Workspaces\projetos\primeiro-projeto[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 3.057s[INFO] Finished at: Tue May 15 08:39:01 BRT 2012[INFO] Final Memory: 12M/162M[INFO] ------------------------------------------------------------------------

Page 15: Automação de Build com Apache Maven hednilson@gmail.com

Primeiro projeto

Page 16: Automação de Build com Apache Maven hednilson@gmail.com

Primeiro projeto

Page 17: Automação de Build com Apache Maven hednilson@gmail.com

Primeiro projeto

PROMPT> mvn archetype:create

Page 18: Automação de Build com Apache Maven hednilson@gmail.com

Primeiro projetoPROMPT>mvn install[INFO] Scanning for projects...[INFO] ------------------------------------------------------------------------[INFO] Building primeiro-projeto 1.0-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ primeiro-projeto ---[INFO] Compiling 1 source file to C:\projetos\primeiro-projeto\target\classes[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ primeiro-projeto ---[INFO] Compiling 1 source file to C:\projetos\primeiro-projeto\target\test-classes[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ primeiro-projeto ---[INFO] Surefire report directory: C:\projetos\primeiro-projeto\target\surefire-reports------------------------------------------------------- T E S T S-------------------------------------------------------Running curso.maven.AppTestTests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.016 sec

Results :Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] --- maven-jar-plugin:2.3.2:jar (default-jar) @ primeiro-projeto ---[INFO] Building jar: C:\projetos\primeiro-projeto\target\primeiro-projeto-1.0-SNAPSHOT.jar[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ primeiro-projeto ---[INFO] Installing C:\projetos\primeiro-projeto\target\primeiro-projeto-1.0-SNAPSHOT.jar toC:\Users\hednilson\.m2\repository\curso\maven\primeiro-projeto\1.0-SNAPSHOT\primeiro-projeto-1.0-SNAPSHOT.jar[INFO] Installing C:\projetos\primeiro-projeto\pom.xml toC:\Users\hednilson\.m2\repository\curso\maven\primeiro-projeto\1.0-SNAPSHOT\primeiro-projeto-1.0-SNAPSHOT.pom[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------

Page 19: Automação de Build com Apache Maven hednilson@gmail.com

Primeiro projeto

Page 20: Automação de Build com Apache Maven hednilson@gmail.com

Agenda• Introdução• Instalação• Configuração• Primeiro projeto• Arquitetura• Integração com Eclipse• Projeto de uma biblioteca (JAR)• Projeto de uma aplicação WAR• Projeto de um componente EJB• Projeto de uma aplicação EAR• Projeto de uma aplicação desktop

Page 21: Automação de Build com Apache Maven hednilson@gmail.com

Arquitetura• Núcleo• Leitura de XML• Gerenciador de repositório de artefatos• Gerenciador de ciclo de vida e plugins

Page 22: Automação de Build com Apache Maven hednilson@gmail.com

Repositório local

Page 23: Automação de Build com Apache Maven hednilson@gmail.com

Outros repositórios

Page 24: Automação de Build com Apache Maven hednilson@gmail.com

Repositórios internos

Page 25: Automação de Build com Apache Maven hednilson@gmail.com

Repositórios externos

Page 26: Automação de Build com Apache Maven hednilson@gmail.com

Plugins• As principais funcionalidades do Maven são providas através

de plugins• Um plugin pode executar mais de uma atividade• goal implementado por um Mojo

• Execução de goals• mvn plugin:goal• mvn plugin:goal –Dparametro=xyz

• Ex:• mvn help:effective-settings• mvn help:describe –Dplugin=compiler

• http://maven.apache.org/plugins

Page 27: Automação de Build com Apache Maven hednilson@gmail.com

Ciclos de vida e fases• Clean• pre-clean• clean• post-clean

• Build (default)• Site• pre-site• site• post-site• deploy-site

Page 28: Automação de Build com Apache Maven hednilson@gmail.com

Ciclo de vida default (build)e suas fases

Page 29: Automação de Build com Apache Maven hednilson@gmail.com

Ciclo de vida default (build-jar)

Page 30: Automação de Build com Apache Maven hednilson@gmail.com

POM – Project Object Model

Page 31: Automação de Build com Apache Maven hednilson@gmail.com

Super POM

Page 32: Automação de Build com Apache Maven hednilson@gmail.com

Super POM

Page 33: Automação de Build com Apache Maven hednilson@gmail.com

Agenda• Introdução• Instalação• Configuração• Primeiro projeto• Arquitetura• Integração com Eclipse• Projeto de uma biblioteca (JAR)• Projeto de uma aplicação WAR• Projeto de um componente EJB• Projeto de uma aplicação EAR• Projeto de uma aplicação desktop

Page 34: Automação de Build com Apache Maven hednilson@gmail.com

Integração com Eclipse• Plugin Maven:• maven-eclipse-plugin

• Gera arquivos do eclipse a partir do pom.xml• .project, .classpath, .settings, ...

• Comando de linha• mvn eclipse:eclipse• Podem ser criados launchers

• http://maven.apache.org/plugins/maven-eclipse-plugin/

• Plugin Eclipse:• m2eclipse

• Configura projeto no eclipse a partir do pom.xml• http://www.sonatype.org/m2eclipse

Page 35: Automação de Build com Apache Maven hednilson@gmail.com

Instalação do m2eclipse

Page 36: Automação de Build com Apache Maven hednilson@gmail.com

Configuração do m2eclipse

Page 37: Automação de Build com Apache Maven hednilson@gmail.com

Criando um projeto

Page 38: Automação de Build com Apache Maven hednilson@gmail.com

Importando um projeto