Automação de Build com Apache Maven [email protected] 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.4 Java version: 1.7.0_03, vendor: Oracle Corporation Java home: C:\Program Files\Java\jdk1.7.0_03-x64\jre Default locale: pt_BR, platform encoding: Cp1252 OS 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-archetypequickstart: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 projeto PROMPT>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.AppTest Tests 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 to C:\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 to C:\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/repositoriosmaven-em-5-minutos.html