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
Download

Apache Maven