1. Apache Maven
Apache Barcamp Spain 2011
www.emergya.es
Sevilla, Octubre 2011
En Twitter
#charlamaven
@ barcampes
Activos @ alediaztorres
v1.0.1
2. Í ndice
I.Introducció n
I.¿Qué es?
II.¿Para qué sirve?
II. Conceptos bá sicos
I.El ciclo de vida
II.Project Object Model (pom.xml)
III. Utilizando Maven
I.Gestió n de dependencias
II.Arquetipos
III.Empaquetado y publicació n
IV.Despliegues y parametrizació n
V.Utilidades
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 2
3. Í ndice
I.Introducció n
I.¿Qué es?
II.¿Para qué sirve?
II. Conceptos bá sicos
III. Utilizando Maven
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 3
4. Introducció n
Conceptos
Í NDICE
1. Introducció n Apache Maven : Herramienta de software
1.¿Qué es?
2. ¿Para qué sirve? de gestió n de proyectos Java.
2. Conceptos bá sicos
3. Utilizando Maven
Pom ( Project Object Model): Fichero que
describe la informació n y configuració n del
proyecto Maven.
Artefacto : Proyecto Java definido a travé s
de un pom.xml e identificado por artifactId,
groupId y version
Repositorio : Conjunto de artefactos
Arquetipo : Plantilla para la creació n de un
proyecto Maven.
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 4
5. Introducció n
Gestió n de proyectos Java
Í NDICE
1. Introducció n
➢ Ciclo de vida
1.¿Qué es?
2. ¿Para qué sirve?
➢ Dependencias y reutilizació n
2. Conceptos bá sicos
3. Utilizando Maven ➢ Perfiles
➢ Uso de IDEs
➢ Automatizació n de tareas
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 5
6. Introducció n
Carácterísticas de Apache Maven
Í NDICE ➢ Gestió n de dependencias
1. Introducció n
1. ¿Qué es?
2.¿Para qué ➢ Arquetipos
sirve?
2. Conceptos bá sicos ➢ Empaquetado y reutilizació n
3. Utilizando Maven
➢ Despliegues y parametrizació n
➢ Utilidades
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 6
7. Introducció n
Síndrome de la hoja en blanco
Í NDICE
1. Introducció n ¿Por dó nde empiezo?
1. ¿Qué es?
2.¿Para qué ➢ ¿Qué quiero conseguir?
sirve?
2. Conceptos bá sicos ➢ ¿Con qué herramientas?
3. Utilizando Maven
➢ ¿Qué partes quiero poder reutilizar?
Puntos de partida
➢ San Google
➢ Repositorios de archetipos
➢ Modularizació n
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 7
8. Í ndice
I.Introducció n
II. Conceptos bá sicos
I.El ciclo de vida
II.Project Object Model (pom.xml)
III. Utilizando Maven
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 8
9. Conceptos básicos
El ciclo de vida
Í NDICE ➢ Diferente en cada empaquetado
1. Introducció n
2. Conceptos
básicos
➢ Extensible a travé s de plugins
1.El ciclo de
vida ➢ Inclusió n de fases anteriores
2. Project Object
Model (pom.xml)
3. Estructura
➢ Ejecució n en entornos multi-
3. Utilizando Maven mó dulo
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 9
10. Conceptos básicos
Project Object Model (pom.xml)
Í NDICE
1. Introducció n
2. Conceptos
➢ Project information
básicos
1. El ciclo de vida ➢ Builds
2. Project Object
Model
(pom.xml)
➢ Profiles
3. Estructura
3. Utilizando Maven ➢ Modules
➢ Plugins
➢ Repositorios
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 10
11. Conceptos básicos: pom.xml
Project Information
Í NDICE
1. Introducció n
2. Conceptos
básicos
1. El ciclo de vida
2. Project Object
Model
(pom.xml)
3. Estructura
3. Utilizando Maven
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 11
12. Conceptos básicos: pom.xml
Builds
Í NDICE
1. Introducció n
2. Conceptos
básicos
1. El ciclo de vida
2. Project Object
Model
(pom.xml)
3. Estructura
3. Utilizando Maven
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 12
13. Conceptos básicos: pom.xml
Profiles
Í NDICE
1. Introducció n
2. Conceptos
básicos
1. El ciclo de vida
2. Project Object
Model
(pom.xml)
3. Estructura
3. Utilizando Maven
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 13
14. Conceptos básicos: pom.xml
Plugins
Í NDICE
1. Introducció n
2. Conceptos
básicos
1. El ciclo de vida
2. Project Object
Model
(pom.xml)
3. Estructura
3. Utilizando Maven
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 14
15. Conceptos básicos: pom.xml
Repositorios
Í NDICE
1. Introducció n
2. Conceptos
básicos
1. El ciclo de vida
2. Project Object
Model
(pom.xml)
3. Estructura
3. Utilizando Maven
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 15
16. Conceptos básicos
Estructura del proyecto
Í NDICE
1. Introducció n Con maven Sin maven
2. Conceptos
básicos
1. El ciclo de vida
2. Project Object
Model (pom.xml)
3. Estructura
3. Utilizando Maven
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 16
17. Í ndice
I.Introducció n
II. Conceptos bá sicos
III. Utilizando Maven
I.Gestió n de dependencias
II.Arquetipos
III.Empaquetado y publicació n
IV.Despliegues y parametrizació n
V.Utilidades
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 17
18. Utilizando Maven
Sin Maven
Í NDICE
1. Introducció n
2. Conceptos bá sicos
3. Utilizando Maven
1. Gestió n de
dependencias
2. Reutilizació n
3. Empaquetado y
publicació n
4. Despliegues y
parametrizació n
5. Utilidades
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 18
19. Utilizando Maven
Con Maven
Í NDICE
1. Introducció n
2. Conceptos bá sicos
3. Utilizando Maven
1. Gestió n de
dependencias
2. Reutilizació n
3. Empaquetado y
publicació n
4. Despliegues y
parametrizació n
5. Utilidades
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 19
20. Utilizando Maven
Sin Maven
Í NDICE ➢ Para funcionalidades
1. Introducció n ➢ A partir del có digo fuente
2. Conceptos bá sicos
3. Utilizando Maven ➢ Abuso del copy-paste
1. Gestió n de
dependencias ➢ Poco eficiente en entornos de desarrollo
2. Reutilizació n ➢ Uso de librerías
3. Empaquetado y
publicació n
4. Despliegues y
parametrizació n ➢ Para proyectos completos
5. Utilidades
➢ Copia manual de la estructura y de las
librerías
➢ Dificultad para la actualizació n
➢ Las librerías no cambian de proyecto a
proyecto
➢ Soluciones intermedias
➢ Scripts de sincronizació n
➢ Uso de tareas Ant
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 20
21. Utilizando Maven
Con Maven
Í NDICE ➢ Para funcionalidades
1. Introducció n ➢ Inclusió n de dependencias
2. Conceptos bá sicos
3. Utilizando Maven ➢ Versiones estables o externas
1. Gestió n de
➢ Versiones intermedias propias
dependencias
2. Reutilizació n
3. Empaquetado y
publicació n ➢ Para proyectos completos
4. Despliegues y ➢ Sin arquetipos
parametrizació n
5. Utilidades ➢ Copia manual del pom
➢ Copia manual del có digo fuente
➢ Con arquetipos
➢ Definen un pom de partida
➢ Incluyen có digo fuente de partida
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 21
22. Utilizando Maven
Empaquetado y publicació n
Í NDICE
1. Introducció n
Repositorios espejo
2. Conceptos bá sicos
3. Utilizando Maven ➢ Centralizació n de recursos
1. Gestió n de
dependencias
2. Reutilizació n
➢ Snapshots
3. Empaquetado
y publicació n ➢ Repositorios
4. Despliegues y
parametrizació n
5. Utilidades
Deploy
➢ Usuario
➢ Distribution-management
➢ No me actualiza
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 22
23. Utilizando Maven
Despliegues y parametrizació n
Í NDICE
1. Introducció n ➢ Configuració n de perfiles de
Uso de diferentes determinadas
2. Conceptos bá sicos
3. Utilizando Maven
tareas para
despliegue perfiles específicos
1. Gestió n de
dependencias
2. Reutilizació n
3. Empaquetado y
publicació n
4. Despliegues y
parametrizació
n
5. Utilidades
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 23
24. Utilizando Maven
Pruebas unitarias
Í NDICE
1. Introducció n
➢ Test Junit
2. Conceptos bá sicos
3. Utilizando Maven
➢ Ejecució n
1. Gestió n de ➢ mvn test
dependencias
2. Reutilizació n ➢ Parametrizació n
3. Empaquetado y
publicació n ➢ Resultados
4. Despliegues y
parametrizació n
5. Utilidades
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 24
25. Utilizando Maven
Plugins para Maven
Í NDICE
1. Introducció n
➢ Core
2. Conceptos bá sicos
3. Utilizando Maven ➢ Surefire
1. Gestió n de
dependencias ➢ Site
2. Reutilizació n
3. Empaquetado y ➢ Packaging
publicació n
4. Despliegues y
parametrizació n ➢ Reporting
5. Utilidades
➢ Javadoc
➢ Surefire-report
➢ Tools
➢ Arquetype
➢ Otros proveedores
➢ Jetty
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 25
26. Utilidades
Plugins para Eclipse
Í NDICE
1. Introducció n
2. Conceptos bá sicos IAM (q4e)
3. Utilizando Maven
1. Gestió n de
dependencias
2. Reutilizació n Pros
3. Empaquetado y Pros
publicació n
➢ Es el más extendido ➢ Es más vistoso
4. Despliegues y ➢ Más robusto ➢ Ofrece más funcionalidades
parametrizació n
5. Utilidades
Contras Contras
➢ Algo soso ➢ Más inestable
➢ Se echan en falta algunas
funcionalidades
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 26
27. Utilizando Maven
Integració n continua
Í NDICE
1. Introducció n
➢ Jenkins
2. Conceptos bá sicos
3. Utilizando Maven ➢ Monitoriza los repositorios
1. Gestió n de
dependencias ➢ Compila y despliega los
2. Reutilizació n
3. Empaquetado y artefactos
publicació n
4. Despliegues y ➢ Pruebas unitarias
parametrizació n
5. Utilidades ➢ Las ejecuta
➢ Publica los resultados
Apache Barcamp Spain | #charlamaven @barcampes @alediaztorres 27
28. Gracias por su atenció n
¿Preguntas?
Más informació n:
https://github.com/alediator/barcamp-maven
Alejandro Díaz Torres <adiaz@ emergya.com>
Avenida de la Innovació n · 3 · C.P. 41020 · SEVILLA · Tel. 954 51 75 77 · 951 21 04 00 · Fax. 954 51 64 73 ·
www.emergya.es