54
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

[ES] Primeros pasos con Maven

Embed Size (px)

DESCRIPTION

Maven es una herramienta de software para la gestión y construcción de proyectos Java creada por Jason van Zyl, de Sonatype, en 2002. Primeros pasos con Maven fue nuestra desconferencia en el BarCamp STI 2013,. Nuestro objetivo principal es introducir el manejo de proyectos usando Maven mediante la utilización de ejemplos básicos. Así como también, Conocer los valores inmediatos que Maven puede ofrecer a muchos usuarios y organizaciones, ya que funciona igual para proyectos pequeños y grandes. **BarCamp STI 2013 es el primer Barcamp celebrado en la República Dominicana, tuvo lugar en el campus de la Pontificia Universidad Católica Madre y Maestra, el sábado 16 de noviembre del 2013, desde las 9 A.M hasta las 6 P.M.

Citation preview

Page 1: [ES] Primeros pasos con Maven

Primeros pasos con

Eudris Cabrera RodríguezDesarrollador de Software / Consultor Informático16 Noviembre 2013, Santiago de los Caballeros, R. D.

BarCamp STI 2013

Page 2: [ES] Primeros pasos con Maven

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.

Page 3: [ES] Primeros pasos con Maven

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

Page 4: [ES] Primeros pasos con Maven

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.

Asuntos Legales

Page 5: [ES] Primeros pasos con Maven

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.

Page 6: [ES] Primeros pasos con Maven

Contenido

❏ Qué es Maven ?

❏ Instalación de Maven

❏ Modelo de objeto del proyecto

❏ Arquetipo (Archetype)

❏ Ciclos de vida y fases

❏ Repositorios

❏ Plugins

❏ Gestión de Dependencia

❏ Integración con IDE

❏ Recomendaciones

Page 7: [ES] Primeros pasos con Maven

Qué es Maven ?

Page 8: [ES] Primeros pasos con Maven

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.

Page 9: [ES] Primeros pasos con Maven

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.

Page 10: [ES] Primeros pasos con Maven

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

Page 11: [ES] Primeros pasos con Maven

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.

Page 12: [ES] Primeros pasos con Maven

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.

Page 13: [ES] Primeros pasos con Maven

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.

Page 14: [ES] Primeros pasos con Maven

Instalación de Maven

Page 15: [ES] Primeros pasos con Maven

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> Linuxexport MAVEN_HOME=~/apache-maven-3.1.1export PATH=$PATH:$MAVEN_HOME/bin> Windowsset M2_HOME=:\Program Files\apache-maven-3.1.1set PATH=%PATH%;%M2_HOME%\bin

Page 16: [ES] Primeros pasos con Maven

Comprobar instalación

❏ Desde la línea de comandos> Escribir mvn -version> Resultado: Ejemplo:

Page 17: [ES] Primeros pasos con Maven

Un proyecto maven simple

Page 18: [ES] Primeros pasos con Maven

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

Page 19: [ES] Primeros pasos con Maven

Estructura de directorios

Para maven-archetype-quickstart

Page 20: [ES] Primeros pasos con Maven

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/)

Page 21: [ES] Primeros pasos con Maven

Modelo de objeto del proyecto

Page 22: [ES] Primeros pasos con Maven

¿Qué es el archivo POM?

❏ 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.

The Project Object Model

Page 23: [ES] Primeros pasos con Maven

Archivo POM (versión simple)

Page 24: [ES] Primeros pasos con Maven

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>

Page 25: [ES] Primeros pasos con Maven

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

Page 26: [ES] Primeros pasos con Maven

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/

Page 27: [ES] Primeros pasos con Maven

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/)

Page 28: [ES] Primeros pasos con Maven

Arquetipo (Archetype)

Page 29: [ES] Primeros pasos con Maven

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

Page 30: [ES] Primeros pasos con Maven

Configuración específica del usuario y repositorio local

Page 31: [ES] Primeros pasos con Maven

<Home_directory>/.m2/settings.xml

Contiene la configuración específica del usuario para la autenticación, los repositorios, y otra información para personalizar el comportamiento de Maven

Page 32: [ES] Primeros pasos con Maven

<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.

Page 33: [ES] Primeros pasos con Maven

Ciclos de vida y fases

Page 34: [ES] Primeros pasos con Maven

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.

Page 35: [ES] Primeros pasos con Maven

Fases del ciclo de vida

Fases predeterminadas

Las partes del ciclo de vida principal del proyecto Maven son:❏ mvn compile ❏ mvn test❏ mvn package ❏ mvn install❏ mvn deploy

Fases predeterminadas

★ mvn compile Genera los ficheros .class

★ mvn test Ejecuta los test automáticos

★ mvn package Genera el fichero .jar

★ mvn installCopia el fichero .jar a un repo local

★ mvn deploy Copia el fichero .jar a un servidor remoto

Page 36: [ES] Primeros pasos con Maven

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/)

Page 37: [ES] Primeros pasos con Maven

Repositorios Maven

Page 38: [ES] Primeros pasos con Maven

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>

Page 39: [ES] Primeros pasos con Maven

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>

Page 40: [ES] Primeros pasos con Maven

Maven Central

Page 41: [ES] Primeros pasos con Maven

Plugins

Page 42: [ES] Primeros pasos con Maven

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.

Page 43: [ES] Primeros pasos con Maven

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

Page 44: [ES] Primeros pasos con Maven

Gestión de Dependencia

Page 45: [ES] Primeros pasos con Maven

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.

Page 46: [ES] Primeros pasos con Maven

Alcance de una dependencia

Page 47: [ES] Primeros pasos con Maven

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.

Page 48: [ES] Primeros pasos con Maven

Integración con IDE

Page 49: [ES] Primeros pasos con Maven

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)

Page 50: [ES] Primeros pasos con Maven

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/)

Page 51: [ES] Primeros pasos con Maven

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.

Page 52: [ES] Primeros pasos con Maven

Referencias

http://www.sonatype.com/resources/books

Maven by Example Maven: The Complete Reference

Repository Management with NexusDeveloping with Eclipse and Maven

The Maven Cookbook

Book: Better Builds with Maven Authors: Vincent Massol & Jason Van Zyl

http://maven.apache.org

Page 53: [ES] Primeros pasos con Maven

¡Gracias por acompañarnos!

Page 54: [ES] Primeros pasos con Maven

Contacto

@eudriscabrera eudriscabrera

@eudriscabrera @eudris

Comunidades

@letsrockjava @ecabrerar

Eudris Cabrera Rodrí[email protected]