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

Preview:

Citation preview

Automação de Buildcom Apache Maven

hednilson@gmail.com

Objetivo• Demonstrar o uso da ferramenta Maven no desenvolvimento

de aplicações Java

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

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

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

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)

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

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

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"

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

Configuração

Configuração global Configuração

de usuário

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

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

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] ------------------------------------------------------------------------

Primeiro projeto

Primeiro projeto

Primeiro projeto

PROMPT> mvn archetype:create

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] ------------------------------------------------------------------------

Primeiro projeto

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

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

Repositório local

Outros repositórios

Repositórios internos

Repositórios externos

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

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

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

Ciclo de vida default (build)e suas fases

Ciclo de vida default (build-jar)

POM – Project Object Model

Super POM

Super POM

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

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

Instalação do m2eclipse

Configuração do m2eclipse

Criando um projeto

Importando um projeto