SlideShare una empresa de Scribd logo
1 de 54
Descargar para leer sin conexión
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
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.
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
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.
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.
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
Qué es 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.
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.
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
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.
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.
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.
Instalación de 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
> 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
Comprobar instalación
❏ Desde la línea de comandos
> Escribir mvn -version
> Resultado:
Ejemplo:
Un proyecto maven simple
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
Estructura de directorios
Para maven-archetype-quickstart
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/)
Modelo de objeto del proyecto
¿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.
Archivo POM (versión simple)
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>
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
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/
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/)
Arquetipo (Archetype)
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
Configuración específica del
usuario y repositorio local
<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
<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.
Ciclos de vida y fases
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.
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
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/)
Repositorios 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>
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>
Maven Central
Plugins
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.
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
Gestión de Dependencia
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.
Alcance de una dependencia
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.
Integración con IDE
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)
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/)
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.
Referencias
http://www.sonatype.com/resources/books
Maven by Example
Maven: The Complete Reference
Repository Management with Nexus
Developing with Eclipse and Maven
The Maven Cookbook
Book: Better Builds with Maven
Authors: Vincent Massol & Jason Van Zyl

http://maven.apache.org
¡Gracias por
acompañarnos!
Contacto
@eudriscabrera

eudriscabrera

@eudriscabrera

@eudris

Comunidades
@letsrockjava

@ecabrerar

Eudris Cabrera Rodríguez
eudris@gmail.com

Más contenido relacionado

La actualidad más candente

Action Jackson! Effective JSON processing in Spring Boot Applications
Action Jackson! Effective JSON processing in Spring Boot ApplicationsAction Jackson! Effective JSON processing in Spring Boot Applications
Action Jackson! Effective JSON processing in Spring Boot ApplicationsJoris Kuipers
 
Coding standards for java
Coding standards for javaCoding standards for java
Coding standards for javamaheshm1206
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8LivePerson
 
Flutter state management from zero to hero
Flutter state management from zero to heroFlutter state management from zero to hero
Flutter state management from zero to heroAhmed Abu Eldahab
 
Installing JDK and first java program
Installing JDK and first java programInstalling JDK and first java program
Installing JDK and first java programsunmitraeducation
 
Basic i/o & file handling in java
Basic i/o & file handling in javaBasic i/o & file handling in java
Basic i/o & file handling in javaJayasankarPR2
 
Evolution of .net frame work
Evolution of .net frame workEvolution of .net frame work
Evolution of .net frame workvc7722
 
Asynchronous API in Java8, how to use CompletableFuture
Asynchronous API in Java8, how to use CompletableFutureAsynchronous API in Java8, how to use CompletableFuture
Asynchronous API in Java8, how to use CompletableFutureJosé Paumard
 
Clean Architecture Applications in Python
Clean Architecture Applications in PythonClean Architecture Applications in Python
Clean Architecture Applications in PythonSubhash Bhushan
 
Micronaut: A new way to build microservices
Micronaut: A new way to build microservicesMicronaut: A new way to build microservices
Micronaut: A new way to build microservicesLuram Archanjo
 
Spring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosSpring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosphelypploch
 

La actualidad más candente (20)

Action Jackson! Effective JSON processing in Spring Boot Applications
Action Jackson! Effective JSON processing in Spring Boot ApplicationsAction Jackson! Effective JSON processing in Spring Boot Applications
Action Jackson! Effective JSON processing in Spring Boot Applications
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Coding standards for java
Coding standards for javaCoding standards for java
Coding standards for java
 
Optional in Java 8
Optional in Java 8Optional in Java 8
Optional in Java 8
 
Spring boot jpa
Spring boot jpaSpring boot jpa
Spring boot jpa
 
laravel.pptx
laravel.pptxlaravel.pptx
laravel.pptx
 
Spring Boot Tutorial
Spring Boot TutorialSpring Boot Tutorial
Spring Boot Tutorial
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8
 
Laravel Tutorial PPT
Laravel Tutorial PPTLaravel Tutorial PPT
Laravel Tutorial PPT
 
Flutter state management from zero to hero
Flutter state management from zero to heroFlutter state management from zero to hero
Flutter state management from zero to hero
 
Spring boot
Spring bootSpring boot
Spring boot
 
Php variables
Php variablesPhp variables
Php variables
 
Installing JDK and first java program
Installing JDK and first java programInstalling JDK and first java program
Installing JDK and first java program
 
Basic i/o & file handling in java
Basic i/o & file handling in javaBasic i/o & file handling in java
Basic i/o & file handling in java
 
Evolution of .net frame work
Evolution of .net frame workEvolution of .net frame work
Evolution of .net frame work
 
Asynchronous API in Java8, how to use CompletableFuture
Asynchronous API in Java8, how to use CompletableFutureAsynchronous API in Java8, how to use CompletableFuture
Asynchronous API in Java8, how to use CompletableFuture
 
Clean Architecture Applications in Python
Clean Architecture Applications in PythonClean Architecture Applications in Python
Clean Architecture Applications in Python
 
Building with Gradle
Building with GradleBuilding with Gradle
Building with Gradle
 
Micronaut: A new way to build microservices
Micronaut: A new way to build microservicesMicronaut: A new way to build microservices
Micronaut: A new way to build microservices
 
Spring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosSpring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutos
 

Similar a [ES] Primeros pasos con Maven

[ES] Control de versiones con subversion
[ES] Control de versiones con  subversion[ES] Control de versiones con  subversion
[ES] Control de versiones con subversionEudris Cabrera
 
Hack x crack_java
Hack x crack_javaHack x crack_java
Hack x crack_javaSaviotec
 
componentes de eclipse
componentes de eclipsecomponentes de eclipse
componentes de eclipseYesiCGlez
 
Demostración final
Demostración finalDemostración final
Demostración finalcarmensp
 
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...Leonardo J. Caballero G.
 
Proyectos JAVA con maven
Proyectos JAVA con mavenProyectos JAVA con maven
Proyectos JAVA con mavenJuan Vladimir
 
Proyectos java-con-maven
Proyectos java-con-mavenProyectos java-con-maven
Proyectos java-con-mavenJuan Vladimir
 
Gestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniterGestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniterandrewzg
 
Corriendo SQL Server en Docker
Corriendo SQL Server en DockerCorriendo SQL Server en Docker
Corriendo SQL Server en DockerJavier Villegas
 
[ES] Introdución a la plataforma java
[ES] Introdución a la plataforma java [ES] Introdución a la plataforma java
[ES] Introdución a la plataforma java Eudris Cabrera
 
Herramientas indispensables para un desarrollador java
Herramientas indispensables para un desarrollador javaHerramientas indispensables para un desarrollador java
Herramientas indispensables para un desarrollador javaAurora Cervantes
 

Similar a [ES] Primeros pasos con Maven (20)

[ES] Control de versiones con subversion
[ES] Control de versiones con  subversion[ES] Control de versiones con  subversion
[ES] Control de versiones con subversion
 
Integrando sonar
Integrando sonarIntegrando sonar
Integrando sonar
 
Hack x crack_java
Hack x crack_javaHack x crack_java
Hack x crack_java
 
Hack x crack_java
Hack x crack_javaHack x crack_java
Hack x crack_java
 
componentes de eclipse
componentes de eclipsecomponentes de eclipse
componentes de eclipse
 
Demostración final
Demostración finalDemostración final
Demostración final
 
Framework Catalyst
Framework CatalystFramework Catalyst
Framework Catalyst
 
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
 
Proyectos JAVA con maven
Proyectos JAVA con mavenProyectos JAVA con maven
Proyectos JAVA con maven
 
Proyectos java-con-maven
Proyectos java-con-mavenProyectos java-con-maven
Proyectos java-con-maven
 
Gestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniterGestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniter
 
JAVA3.0
JAVA3.0JAVA3.0
JAVA3.0
 
Tutorial eclipse
Tutorial eclipseTutorial eclipse
Tutorial eclipse
 
Corriendo SQL Server en Docker
Corriendo SQL Server en DockerCorriendo SQL Server en Docker
Corriendo SQL Server en Docker
 
[ES] Introdución a la plataforma java
[ES] Introdución a la plataforma java [ES] Introdución a la plataforma java
[ES] Introdución a la plataforma java
 
Herramientas indispensables para un desarrollador java
Herramientas indispensables para un desarrollador javaHerramientas indispensables para un desarrollador java
Herramientas indispensables para un desarrollador java
 
Maven
MavenMaven
Maven
 
ATIX20
ATIX20ATIX20
ATIX20
 
Java desde cero maven
Java desde cero mavenJava desde cero maven
Java desde cero maven
 
Modulo 1
Modulo 1Modulo 1
Modulo 1
 

Último

Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 

Último (20)

Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 

[ES] Primeros pasos con Maven

  • 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
  • 16. Comprobar instalación ❏ Desde la línea de comandos > Escribir mvn -version > Resultado: Ejemplo:
  • 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
  • 19. Estructura de directorios Para maven-archetype-quickstart
  • 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/)
  • 21. Modelo de objeto del proyecto
  • 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
  • 31. <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
  • 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.
  • 33. Ciclos de vida y fases
  • 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.
  • 46. Alcance de una dependencia
  • 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.
  • 52. Referencias http://www.sonatype.com/resources/books Maven by Example Maven: The Complete Reference Repository Management with Nexus Developing with Eclipse and Maven The Maven Cookbook Book: Better Builds with Maven Authors: Vincent Massol & Jason Van Zyl http://maven.apache.org