Escolar Documentos
Profissional Documentos
Cultura Documentos
Make (1979)
...
Ant (2000)
...
Maven (2004)
Leonardo Murta
Introduo ao Maven
Ant x Maven
Ant
Fortemente baseada em configurao Procedural Processo de construo e ferramentas utilizadas ficam misturados
Maven
Conveno sobre Configurao Declarativo Existncia de um processo padro Ferramentas padres dependentes do tipo de empacotamento
Introduo ao Maven 4
Leonardo Murta
Elementos bsicos
POM (Project Object Model)
Descritor XML da estrutura de um projeto
Fase (phase)
Passo do processo de construo Ex.: compile
Plug-in
Ferramenta utilizada no processo de construo Ex.: scm
Meta (goal)
Funcionalidade provida por uma ferramenta Ex.: scm:checkin
Leonardo Murta Introduo ao Maven 5
Elementos bsicos
Ciclo de vida
*
1
Fase *
1 Meta
*
Plug-in
Leonardo Murta
Introduo ao Maven
Fase 2
Meta 1
Fase 3 ...
Fase N Ciclo de Vida
Leonardo Murta Introduo ao Maven
Meta 2
Plugin 2
Meta 3
...
7
Funcionalidades do Maven
Gerao da estrutura do projeto Gesto do processo de construo Gesto de dependncias Utilizao de repositrio organizacional Gerao do site do projeto
Leonardo Murta Introduo ao Maven 8
Leonardo Murta
$ mvn archetype:generate [80: remote -> maven-archetype-quickstart (An archetype which contains a sample Maven project.)] ... Define value for property 'groupId': : uff Define value for property 'artifactId': : teste Define value for property 'version': 1.0-SNAPSHOT: Define value for property 'package': uff: ...
Leonardo Murta
Introduo ao Maven
11
Leonardo Murta
Introduo ao Maven
12
<project ...> <modelVersion>4.0.0</modelVersion> <groupId>uff</groupId> <artifactId>teste</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>teste</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
Leonardo Murta Introduo ao Maven 13
Leonardo Murta
Introduo ao Maven
14
Leonardo Murta
Introduo ao Maven
15
package uff;
/** * Hello world! * */ public class App { public static void main( String[] args ) { System.out.println( "Hello World!" ); } }
Leonardo Murta Introduo ao Maven 16
Leonardo Murta
Introduo ao Maven
17
src/test/resources
src/site target
Recursos de teste
Site do projeto Diretrio com arquivos gerados pelo processo de build
LICENSE.txt
README.txt pom.xml
Licena do projeto
Viso geral do projeto Descritor Maven do projeto
Leonardo Murta
Introduo ao Maven
18
Funcionalidades do Maven
Gerao da estrutura do projeto Gesto do processo de construo Gesto de dependncias Utilizao de repositrio organizacional Gerao do site do projeto
Leonardo Murta Introduo ao Maven 19
Leonardo Murta
Introduo ao Maven
23
Leonardo Murta
Introduo ao Maven
24
Leonardo Murta
Introduo ao Maven
25
Leonardo Murta
Introduo ao Maven
26
Funcionalidades do Maven
Gerao da estrutura do projeto Gesto do processo de construo Gesto de dependncias Utilizao de repositrio organizacional Gerao do site do projeto
Leonardo Murta Introduo ao Maven 27
Gesto de Dependncias
Problema: Como lidar com situaes onde o projeto depende de bibliotecas externas? Maven permite definir dependncias para um projeto
As dependncias so definidas no pom.xml O Maven calcula as dependncias considerando transitividade As dependncias so baixadas de repositrios centrais por demanda
Leonardo Murta Introduo ao Maven 28
Gesto de Dependncias
(definindo dependncia no pom.xml)
<project ...> ... <dependencies> <dependency> <groupId>axis</groupId> <artifactId>axis</artifactId> <version>1.4</version> <scope>compile</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
Leonardo Murta Introduo ao Maven 29
Leonardo Murta
Introduo ao Maven
30
Leonardo Murta
Introduo ao Maven
31
Gesto de Dependncias
(vendo dependncias no NetBeans)
Leonardo Murta
Introduo ao Maven
32
Leonardo Murta
Introduo ao Maven
33
Funcionalidades do Maven
Gerao da estrutura do projeto Gesto do processo de construo Gesto de dependncias Utilizao de repositrio organizacional Gerao do site do projeto
Leonardo Murta Introduo ao Maven 34
Rep. local
Repositrio Organizacional
Repositrio Central
Repositrio Empresa Y
Leonardo Murta
Introduo ao Maven
36
Computador A
espao de trabalho
Repositrio Organizacional mvn install
Rep. local
mvn deploy
Leonardo Murta
Introduo ao Maven
37
Leonardo Murta
Introduo ao Maven
38
Leonardo Murta
Introduo ao Maven
39
Leonardo Murta
Introduo ao Maven
41
Leonardo Murta
Introduo ao Maven
42
Leonardo Murta
Introduo ao Maven
43
Funcionalidades do Maven
Gerao da estrutura do projeto Gesto do processo de construo Gesto de dependncias Utilizao de repositrio organizacional Gerao do site do projeto
Leonardo Murta Introduo ao Maven 44
Leonardo Murta
Introduo ao Maven
47
Referncias
Sonatype, 2008, Maven: The Definitive Guide, OReilly Walter dos Santos Filho, 2008, Introduo ao Apache Maven, Eteg Tecnologia da Informao Ltda http://maven.apache.org
Leonardo Murta
Introduo ao Maven
48
Introduo ao Maven