View
222
Download
3
Embed Size (px)
Citation preview
Automação de Buildcom Apache Maven
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
Referências• http://maven.apache.org• http://www.sonatype.org• http://
resumotecnico.blogspot.com.br/2011/09/repositorios-maven-em-5-minutos.html