Eudris Cabrera Rodríguez presentó sobre el uso de Maven para gestionar proyectos de software. Mencionó que Maven es una herramienta para construir y gestionar proyectos que proporciona un sistema de construcción uniforme basado en convenciones. Explicó conceptos clave como el modelo de objetos de proyecto, ciclos de vida, fases, plugins, repositorios y gestión de dependencias.
1. Primeros pasos con
Eudris Cabrera Rodríguez
Desarrollador de Software / Consultor Informático
16 Noviembre 2013, Santiago de los Caballeros, R. D.
BarCamp STI 2013
2. Eudris Cabrera Rodríguez
❏ Egresado de la carrera de Ingeniería Telemática de la PUCMM en
el 2006.
❏ Desarrollador Java EE / SE desde hace más de 6 años, laborando
para prestigiosas empresas; Cementos Cibao, 8A, Edenorte
Dominicana, entre otras.
❏ Desarrollador Informático / Consultor en PAFI (Programa de
Administración Financiera Integrada / Ministerio de Hacienda).
❏ Entusiasta de la tecnología y software libre.
❏ Un apasionado del aprendizaje, que cree en la cultura de compartir
conocimientos, enseñar y aprender de los demás.
3. Más sobre mi
❏
Miembro del equipo de desarrollo de Astive Toolkit
❏ Framework para el desarrollo de aplicaciones de voz
❏ Ayuda a conectar Asterisk con el resto del mundo
❏ Servidor y Kit de desarrollo Java
Sitio Oficial:
http://astivetoolkit.org
Únete a nosotros en GitHub
@astivetoolkit
4. Asuntos Legales
Todas las marcas registradas, así como todos los logotipos, imágenes,
fotografías, audio y vídeos mostrados en esta presentación son
propiedad de sus respectivos propietarios.
Su utilización es solamente para fines ilustrativos y no pretendo dar a
entender cualquier afiliación con esas empresas.
Los conceptos y juicios de valor emitidos en esta presentación son
responsabilidad personal y no se puede entender como una posición
oficial de alguna empresa con la que he tenido relación laboral.
5. Objetivos
Introducir el manejo de proyectos usando Maven mediante la
utilización de ejemplos básicos.
Conocer los valores inmediatos que Maven puede ofrecer a
muchos usuarios y organizaciones, ya que funciona igual para
proyectos pequeños y grandes.
6. Contenido
❏ Qué es Maven ?
❏ Repositorios
❏ Instalación de Maven
❏ Plugins
❏ Modelo de objeto del
❏ Gestión de Dependencia
proyecto
❏ Integración con IDE
❏ Arquetipo (Archetype)
❏ Recomendaciones
❏ Ciclos de vida y fases
8. Qué es Maven ?
❏ Herramienta de software para la gestión y construcción de
proyectos.
> Es más que una herramienta de compilación
❏ Proporciona un sistema de construcción uniforme.
> Project Object Model (POM) - pom.xml
❏ Basado en el principio de Convención sobre Configuración
> Requiere configuración mínima.
9. Más sobre Maven
❏ Viene con objetivos predefinidos para realizar ciertas tareas
claramente definidas, como la compilación del código y su
empaquetado.
❏ Provee una arquitectura basada en plugins
> cualquiera escribir plugins para su interfaz con herramientas
como compiladores, herramientas de pruebas unitarias, etcétera,
para cualquier otro lenguaje.
10. Porqué usar Maven ?
❏ Facilita el proceso de compilado y empaquetado
❏ Proporciona un sistema de compilado uniforme
❏ Proporciona información de útil sobre los proyectos
❏ Proporciona directrices para las mejores prácticas de desarrollo
❏ Permite migración transparente a nuevas características
11. Información útil sobre los proyectos
❏ Maven ofrece información útil sobre el proyecto que es en parte
tomado de su POM y, en parte generada a partir de fuentes de su
proyecto.
❏ Lista de cambios (CHANGELOG) desde el control de
versiones.
❏
Dependencias transitivas.
❏
Informes de la ejecución de pruebas unitarias.
12. Características (1)
❏ Creación sencilla y ágil de un nuevo proyecto o módulo.
❏ Estandarización de la estructura de un proyecto, y de las
técnicas relacionadas con éste.
❏ Maven incluye un potente mecanismo de gestión de las
dependencias de un proyecto sobre librerías propias o de
terceros.
❏ Maven permite una sencilla gestión simultánea de varios
proyectos.
13. Características (2)
❏ Maven dispone de un enorme repositorio de librerías Open
Source en constante actualización, de forma que los
desarrolladores pueden acceder a las versiones más
actualizadas de las mismas.
❏ Maven es extensible: dispone de multitud de plugins y de la
posibilidad de creación de otros que necesitemos.
❏ Extensible con la capacidad para escribir fácilmente plugins de
Java o lenguajes de scripting
❏ Nos proporciona un acceso inmediato a nuevas funcionalidades
requiriendo un esfuerzo muy pequeño de configuración.
15. Pasos para instalar maven
❏ Descargar y descomprimir
> http://maven.apache.org/download.html
❏ Asegúrese de que la variable de entorno JAVA_HOME
está en apuntando al directorio del JDK
❏ Añadir a la variable de entorno PATH
> Linux
export MAVEN_HOME=~/apache-maven-3.1.1
export PATH=$PATH:$MAVEN_HOME/bin
> Windows
set M2_HOME=:Program Filesapache-maven-3.1.1
set PATH=%PATH%;%M2_HOME%bin
18. Pasos para crear un proyecto simple
❏ mvn archetype:generate
> Generar un proyecto Maven
❏ Se le pedirá que proporcione la siguiente información
> Archetype (tipo proyecto)
> Group Id
> Artifact Id
> Version
> Package
Resultado final
> Estructura de directorios del proyecto
> pom.xml
20. Crear un proyecto maven simple
❏ Github: https://github.com/ecabrerar/BarCampSTI2013-Maven
❏ Seguir las instrucciones del Ejercicio I
❏ Ejecutar localmente o en Cloud9 IDE (https://c9.io/)
22. ¿Qué es el archivo POM?
The Project Object Model
❏ Archivo XML que contiene
información relevante del
proyecto.
❏ El POM Maven dice qué tipo
de proyecto se está
trabajando y cómo modificar
el comportamiento por
defecto para generar la
salida.
24. Identidad del proyecto
❏ En Maven todo es un proyecto y cada proyecto tiene una identidad
única (Identidad del Artefacto)
❏ La identidad de un proyecto se define de la siguiente forma:
<groupId>org.ecabrerar.barcampsti</groupId>
<artifactId>simple-project</artifactId>
<version>1.0-SNAPSHOT</version>
25. Identidad del Proyecto
❏ groupId
> Organización
> La convención es utilizar el nombre de dominio de forma inversa
> Ejemplo: org.ecabrerar.barcampsti
❏ artifactId
> Un identificador único dentro de un groupId
❏ version
> Una versión específica de un proyecto
26. El Super POM
❏ Siempre es el padre de todos
los proyectos Maven.
❏ Define algunas variables de
configuración estándar que
son heredados por todos los
proyectos.
❏ Define un único repositorio
remoto de Maven con un ID
de “central”.
http://maven.apache.org/ref/
27. Personalizar un proyecto maven
❏ Github: https://github.com/ecabrerar/BarCampSTI2013-Maven
❏ Seguir las instrucciones del Ejercicio II
❏ Ejecutar localmente o en Cloud9 IDE (https://c9.io/)
29. Qué es un Arquetipo (Archetype) ?
❏ "Arquetipo" es "un modelo original o tipo del que se pueden crear
modelos similares o prototipos"
❏ Promueve las buenas prácticas
> Estructura de directorio, dependencias y plugins necesarios
en el proyecto.
❏ Existen muchos arquetipos provisto por la comunidad de maven.
> Aplicaciones Java Standard
> Aplicaciones Spring
> Aplicaciones Hibernate
> Muchos más
32. <Home_directory>/.m2/repository
❏ Repositorio local maven
❏ Almacena localmente los
artefactos generados
(archivos jar, war, ear, etc).
❏
Almacena copias de
dependencias descargadas
de repositorios remotos.
34. Ciclo de vida básico
Maven fue pensado alrededor
del concepto central de un
ciclo de vida del compilado
Lo que significa:
Proceso claramente definido.
Sólo es necesario aprender
algunos comandos para
compilar un proyecto Maven
Existen 3 ciclo de vida del
compilado
★ default : maneja la
implementación del proyecto
★ clean : maneja la limpieza del
proyecto
★
site : se encarga de la creación
del sitio de documentación de su
proyecto.
35. Fases del ciclo de vida
Fases predeterminadas
★ mvn compile
Genera los ficheros .class
★ mvn test
Ejecuta los test automáticos
★ mvn package
Genera el fichero .jar
★ mvn install
Copia el fichero .jar a un repo local
★ mvn deploy
Copia el fichero .jar a un servidor
remoto
36. Crear una aplicación web simple
❏ Github: https://github.com/ecabrerar/BarCampSTI2013-Maven
❏ Seguir las instrucciones del Ejercicio III
❏ Ejecutar localmente o en Cloud9 IDE (https://c9.io/)
38. Qué es un repositorio ?
❏ Mantiene plugins y artefactos
❏ Los repositorios remotos predeterminados pueden mantener
plugins y artefactos públicos.
> Maven Central
❏ Los repositorios personalizados se pueden configurar para
mantener plugins y artefactos no públicos
❏ Cada artefacto se mantiene en una estructura de directorio que
coincide con las coordenadas de un proyecto
<groupId>/<artifactId>/<version>/<artifactId>-<version>.<packaging>
39. Estructura del repositorio
Cada artefacto se mantiene en una estructura de directorio que
coincide con las coordenadas de un proyecto
<groupId>/<artifactId>/<version>/<artifactId>-<version>.<packaging>
42. Arquitectura basada en plugins
❏ Todas las tareas de Maven se realizan a través de plugins
❏ Los plugins son descargados al igual que las dependencias de
repositorios remotos según sea necesario y son actualizados
periódicamente.
❏ Un plugin maven es una colección de uno o más unidades de
tareas (goals).
❏ Usted puede crear plugins personalizados
❏ Un plugin personalizado puede ser escrito en diferentes lenguajes
de programación: Java, Groovy, Ant, Ruby, entre otros.
43. Beneficios del uso de plugins
❏ Plugin comunes pueden ser usados en diferentes proyectos
❏ Un plugin puede ser modificado sin afectar las demás partes de un
proyecto.
❏ Los cambios/mejoras realizados a los plugins por parte de alguna
comunidad es beneficio para todos.
❏ Ejemplos de plugins "listo para usar"
➔ Archetype plugin
➔ Jar plugin
➔ Compiler plugin
➔ Hibernate3 plugin
45. Uso de dependencias
❏ Las dependencias son especificadas usando las coordenadas
<dependencies>
<dependency></dependency>
</dependencies>
❏
Maven maneja el concepto de dependencias transitivas
❏ Maven también maneja conflictos entre dependencias
❏ Cada dependencia tiene un alcance (scope) específico.
47. Scopes
Los principales scopes son los siguientes:
❏ compile: predeterminado, se usa por defecto si no se especifica
otro
❏ provided : indica que el jdk o el contenedor va a proveer la
dependencia
❏ runtime : solo se necesita en tiempo de ejecución
❏ test : sólo es requerida en compilación de pruebas.
49. IDE
Existen plugins de Maven para crear archivos de configuración del IDE
a partir de los POMs.
Actualmente se soportan:
❏
❏
❏
❏
Eclipse
Netbeans
IntelliJ
JDeveloper 11G (11.1.1.3)
50. Crear un proyecto multi-módulo
❏ Github: https://github.com/ecabrerar/BarCampSTI2013-Maven
❏ Seguir las instrucciones del Ejercicio IV
❏ Ejecutar localmente o en Cloud9 IDE (https://c9.io/)
51. Recomendaciones
❏ Podemos describir un proyecto en Maven como una carpeta en la
que tenemos un fichero descriptor de proyecto (pom.xml).
En lugar de crear el proyecto a mano podemos hacer uso de un
gran número de plantillas o archetype.
❏ Usar versiones recientes de Maven. Esto es mayores a 3.1.x.
❏ Como regla general, es mejor para encontrar los nombres de los
módulos funcionales. Sin embargo, por lo general es más fácil
elegir los nombres que representan una tecnología en su lugar.