SlideShare una empresa de Scribd logo
Maven es una herramienta para la gestión y construcción de proyectos Java fue creada por Jason Van Zyl.
De sonatype. En 2002, características:
• Funcionalidad similar a Apache Ant
• Fichero de configuración por un xml
• Para cada proyecto tiene un fichero llamado pom.xml (Project Object Model) para describir el
proyecto de software a construir, sus dependencias de otros módulos o componentes
externos, etc.
Requisitos
Antes de instalar maven tenemos que tener los siguiente:
•Java 5
•JAVA_HOME
Instalación Windows
Descomprimimos el archivo zip de la versión recomendada (apache-maven-XXX-bin.zip)
C:apache-maven-2.0.8
Agregamos el directorio bin del directorio creado a la variable PATH del SO:
"C:apache-maven-2.0.8bin";%PATH%
Acto seguido procedemos a ejecutar desde línea de comandos la siguiente instrucción:
mvn --version
Repositorio (Repository)
El funcionamiento de Maven se basa en el uso de un repositorio a donde ir a buscar las dependencias. La
identificación de los artefactos que necesita se hace a través del sistema de coordenadas que asegura que
cada dependencia sea única y proveer una ruta para conseguirla.
El repositorio por default es el repositorio central de Maven. A este repositorio se suman otros repositorios,
un repositorio local y la posibilidad de utilizar un repositorio/proxy.
Cuando Maven sale a buscar y consigue una dependencia la guarda en el repositorio local que es un
directorio en la máquina del usuario (~/.m2/repository). Las siguientes veces que necesite esta dependencia
irá la conseguirá en el directorio local haciéndolo mucho más rápido que la primera vez.
El directorio central y los directorios de terceros en lo único que se diferencian es en que se va a encontrar
en cada uno. En el repositorio central de Maven podemos esperar encontrar la mayoría de las dependencias
que necesitemos como JUnit, Java, Spring, Hibernate, etc.
El repositorio/proxy es un servicio que podemos instalar en la LAN para cumplir una función similar a la del
repositorio local pero compartido por un grupo de usuarios. Esto, además de mejorar la performance, permite
tener un mayor control de las versiones de dependencias que se utilizarán.
Arquetipo (Archetype)
La descripción y administración de un proyecto con Maven requiere que el proyecto tenga una estructura
determinada y que tenga el pom.xml correspondientes. Existe un plugin en Maven que permite generar la
estructura y configuración inicial de un proyecto a partir de una plantilla. Estas plantillas con llamadas
archetypes (arquetipos) y el plugin que permite la generación a partir de los arquetipos se llama también
archetype. Los arquetipos pueden publicarse en un repositorio al igual que cualquier otro artefacto.
Perfiles (Profiles)
Maven está diseñado para maximizar la portabilidad de los artefactos. Es posible redefinir prácticamente
cualquier parte de un POM definiendo un perfil. Pueden definirse varios perfiles. La activación de un perfil
puede dispararse por uno o una combinación de las siguientes evaluaciones:
•Sistema operativo
•Variables de entorno del sistema operativo
Ciclo de Vida (Lifecycle)
Maven utiliza el concepto de ciclo de vida para ejecutar una secuencia ordenada de pasos denominados
fases. Existen 3 ciclos de vida en Maven :
• clean: Elimina las clases compilas y los archivos generados
• default: Genera los archivos binarios de nuestro artefacto(por defecto)
• site: Genera archivos html que describe nuestro artefacto
Este ciclo de vida define la secuencia de fases que va desde validar la integridad hasta el despliegue en su
instalación final de un proyecto. Cuando se solicita la ejecución de una fase Maven ejecuta primero todas
las fases anteriores siguiendo la secuencia y termina en la fase solicitada.
Cuando la ejecución llega a una determinada fase, Maven busca los plugins que estén adjuntados a la
misma y ejecuta los goals correspondientes. Pueden existir ninguno o más plugins asociados a una fase.
Fases asociadas al ciclo de vida de clean:
• pre-clean
• clean
• post-clean
Fases asociadas al ciclo de vida de site:
• pre-site
• site
• post-site
• site-deploy
Fases asociados al ciclo de vida default:
• validate
• initialize
• generate-sources
• process-sources
• generate-resources
• process-resources
• compile
• process-classes
• generate-test-sources
• process-test-sources
• generate-test-resources
• process-test-resources
• test-compile
• process-test-classes
• test
•prepare-package (maven 2.1+)
•package
•pre-integration-test
•integration-test
•post-integration-test
•verify
•install
•deploy
Goal, mojo y plugin
Los Goals de Maven son las unidades mínimas de ejecución. El artefacto que recoge un goal es un mojo
(Maven Plain Old Java Object) un conjunto de mojos forma un plugin. Los plugins pueden instalarse y distribuirse mediante
Los repositorios. Invocación de los plugin en maven:
Desde linea de comando: mvn groupId:artifactId:version:goal
Desde el pom.xml.
(Maven también permite hacer prefijos a los plugins y nombre cortos )
Dependencias
Una dependencia es una referencia en el POM de la librería que se desea incluir en el proyecto. Existen 6
ámbitos en los que una dependencia puede ser declarada limitando así su transitividad.
Compile: ámbito por defecto. Las dependencias están disponibles en el proyecto y en sus proyectos
dependientes.
Provide: se espera que el JDK, la aplicación o el contenedor provea la dependencia.
Runtime: la dependencia no es requerida en tiempo de compilación pero sí para la ejecución.
Test: son dependencias que son requeridas solo cuando se compila y ejecuta los test.
System: similar a provided pero se le debe indicar el jar que contiene la dependencia
Import: (a partir a la versión 2.0.9) solo es usado en una dependencia del tipo POM en la sección indica
que el POM utilizado debe ser remplazado con las dependencias que éste tenga en su sección
Coordenadas (Coordinates)
Las coordenadas de Maven es la forma de identificar a un proyecto, dependencia, plugin o artefacto de
forma única en un pom y en un repositorio. Una coordenada se compone de los siguientes identificadores:
groupId:artefactId:version.
A veces es necesario generar dos empaquetados distintos de una misma versión por cuestiones técnicas,
por ejemplo un mismo artefacto para correr sobre dos entornos diferentes. En esta situación se puede
utilizar un identificador más:
groupId:artefactId:version:classifier.
Al momento de producir artefactos, estos cuatro identificadores funcionan en conjunto con uno más, pero
que no forma parte de la coordenada: packaging y que se refiere al tipo de empaquetado del artefacto (ejs:
zip, jar, ear). De hecho no es posible tener en el repositorio dos artefactos de la misma versión pero con
diferente empaquetado.
•groupId nombre bajo el que se agrupan una serie de artefactos (ej:
junit, spring, org.xyx, com.tm.projectox').
•artifactId identificacion de la unidad mínima administrada por el repositorio (ej: junit, modulo Ejb, ejb-
api, servlet-api).
•version la versión del artefacto con la siguiente nomenclatura <major version>.<minor
version>.<incremental version>-<qualifier>.
•classifier clasificador que permite diferenciar iguales versiones pero preparadas o compiladas para
diferentes entornos.
•packaging no forma parte de la coordenada y sólo se utiliza al momento de generar un artefacto. Define el
formato del empaquetado (ejs: jar, war, zip, pom).
Herencia
Los POMs pueden heredar de otro POM que se defina como parent. La raiz implícita desde donde heredan
todos los POMs es el Super POM definido por Maven.
La estructura de directorios estándar de maven es la siguiente:
•src/main/java Fuentes de la Aplicación/Librería
•src/main/resources Recursos de la Aplicación/Librería
•src/main/filters Ficheros de filtros
•src/main/assembly Descriptores del Assembly
•src/main/config Ficheros de configuración
•src/main/webapp Fuentes de la aplicación Web
•src/main/sql Scripts de bbdd
•src/test/java Fuentes de los Test
•src/test/resources Recursos de los Test
•src/test/filters Ficheros de filtros para los Test
•src/site Documentación “apt” sobre el proyecto
•target Directorio donde Maven deja los resultados
•target/classes Resultado de la compilación.
•LICENSE.txt Licencia del Proyecto
•README.txt Readme del Proyecto
•pom.xml Descriptor Maven del proyecto
Configuración mínima para el funcionamiento del pom.xml.
Añadiendo repositorios
Añadiendo perfiles.
Para invocar un perfil desde consola: mvn –PidPerfil
Añadiendo dependencias.
Añadiendo dependencias.
Exclusión de dependencias
Añadiendo propiedades
Añadiendo filtros
Añadiendo plugins.
Configurando plugins.
Haciendo herencia.
Listado plugins mas usado:
•Compila el proyecto con versión que deseamos : maven-compiler-plugin
•Generar jar : maven-jar-plugin
•Copia las dependencias de nuestro proyecto : maven-dependency-plugin
•Generar .project y .classpath : maven-eclipse-plugin
•Codifica los ficheros de src/main/resources : maven-resources-plugin
•Generar un único jar con todas las dependecias : maven-shade-plugin
•Generar war : maven-war-plugin
•Desplegar un proyecto web tomcat : tomcat-maven-plugin
•Desplegar un proyecto web jetty : maven-jetty-plugin
•Comprimir javaScript de un proyecto web : yuicompressor-maven-plugin
•Notificar cambios nuestro proyecto : maven-changes-plugin
•Generar nuestro informe de CheckStyle : maven-checkstyle-plugin
•Generar el javaDoc : maven-javadoc-plugin
•Generar el PMD : maven-pmd-plugin
•Generar la cobertura : cobertura-maven-plugin
•Generar documentacion test: maven-surefire-plugin
•Generar diferentes tipos compresiones : maven-assembly-plugin
•Ayuda sobre el proyecto y plugins : maven-help-plugin
•Versiones de dependencias y plugins: versions-maven-plugin
La siguiente es una lista de los administradores de repositorios Maven conocidos y enumerados en el orden cronológico de aparición
en la comunidad:
•Sonatype Nexus
•Artifactory
•Apache Archiva
6748
6 5
Herramientas
Maven
Ant
SBT
Gradle
Fuente de la consulta
Maven
•http://maven.apache.org/
•http://www.juntadeandalucia.es/servicios/madeja/contenido/recurso/322
•http://www.mkyong.com/tutorials/maven-tutorials/
•http://stackoverflow.com/
Buscadores de jar
•http://www.jarvana.com/jarvana/
•http://www.findjar.com/index.x
•http://www.jarfinder.com/
Tarragona, 30
28003 Madrid
www.indizen.com
Q&A

Más contenido relacionado

La actualidad más candente

Ic maven jenkins_sonar
Ic maven jenkins_sonarIc maven jenkins_sonar
Ic maven jenkins_sonar
Rocío Muñoz
 
De desarrollo a producción usando docker
De desarrollo a producción usando dockerDe desarrollo a producción usando docker
De desarrollo a producción usando docker
Christian Rodriguez
 
Selenium
SeleniumSelenium
Selenium
Sheyla Guerrero
 
Jenkins, no me rompas los builds!
Jenkins, no me rompas los builds!Jenkins, no me rompas los builds!
Jenkins, no me rompas los builds!
Gonzalo Sainz Trápaga
 
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverPrueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
David Gómez García
 
Presentacion de Integración Continua
Presentacion de Integración ContinuaPresentacion de Integración Continua
Presentacion de Integración Continua
Rodrigo Ayala
 
Desplegando código con Phing, PHPunit, Coder y Jenkins
Desplegando código con Phing, PHPunit, Coder y JenkinsDesplegando código con Phing, PHPunit, Coder y Jenkins
Desplegando código con Phing, PHPunit, Coder y Jenkins
La Drupalera
 
Introduccion A Docker
Introduccion A DockerIntroduccion A Docker
Introduccion A Docker
Adrian Garcia Casas
 
Curso Spring Roo Spring Data Jpa Maven
Curso Spring Roo Spring Data Jpa MavenCurso Spring Roo Spring Data Jpa Maven
Curso Spring Roo Spring Data Jpa Maven
Cristian Romero Matesanz
 
Breve introducción a Apache Ant
Breve introducción a Apache AntBreve introducción a Apache Ant
Breve introducción a Apache Ant
Iker Canarias
 
Springboot Overview
Springboot  OverviewSpringboot  Overview
Springboot Overview
Jose Patricio Bovet Derpich
 
Desenredando el toolchain de Javascript
Desenredando el toolchain de JavascriptDesenredando el toolchain de Javascript
Desenredando el toolchain de Javascript
Software Guru
 
Vagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoVagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de uso
Sergio Zambrano Delfa
 
Despliegue de aplicaciones PHP
Despliegue de aplicaciones PHPDespliegue de aplicaciones PHP
Despliegue de aplicaciones PHP
AlicantePHP
 
Construccion de proyectos con gradle
Construccion de proyectos con gradleConstruccion de proyectos con gradle
Construccion de proyectos con gradle
David Gómez García
 
Taller docker _es-cl
Taller docker _es-clTaller docker _es-cl
Taller docker _es-cl
Felipe de Morais
 
6/9 Curso JEE5, Soa, Web Services, ESB y XML
6/9 Curso JEE5, Soa, Web Services, ESB y XML6/9 Curso JEE5, Soa, Web Services, ESB y XML
6/9 Curso JEE5, Soa, Web Services, ESB y XML
Juan Carlos Rubio Pineda
 
Docker images
Docker imagesDocker images
Docker images
Victor S. Recio
 
Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)
Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)
Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)
Adrian Garcia Casas
 
FROM lost to the docker
FROM lost to the dockerFROM lost to the docker
FROM lost to the docker
Irene Alonso Candelario
 

La actualidad más candente (20)

Ic maven jenkins_sonar
Ic maven jenkins_sonarIc maven jenkins_sonar
Ic maven jenkins_sonar
 
De desarrollo a producción usando docker
De desarrollo a producción usando dockerDe desarrollo a producción usando docker
De desarrollo a producción usando docker
 
Selenium
SeleniumSelenium
Selenium
 
Jenkins, no me rompas los builds!
Jenkins, no me rompas los builds!Jenkins, no me rompas los builds!
Jenkins, no me rompas los builds!
 
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverPrueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
 
Presentacion de Integración Continua
Presentacion de Integración ContinuaPresentacion de Integración Continua
Presentacion de Integración Continua
 
Desplegando código con Phing, PHPunit, Coder y Jenkins
Desplegando código con Phing, PHPunit, Coder y JenkinsDesplegando código con Phing, PHPunit, Coder y Jenkins
Desplegando código con Phing, PHPunit, Coder y Jenkins
 
Introduccion A Docker
Introduccion A DockerIntroduccion A Docker
Introduccion A Docker
 
Curso Spring Roo Spring Data Jpa Maven
Curso Spring Roo Spring Data Jpa MavenCurso Spring Roo Spring Data Jpa Maven
Curso Spring Roo Spring Data Jpa Maven
 
Breve introducción a Apache Ant
Breve introducción a Apache AntBreve introducción a Apache Ant
Breve introducción a Apache Ant
 
Springboot Overview
Springboot  OverviewSpringboot  Overview
Springboot Overview
 
Desenredando el toolchain de Javascript
Desenredando el toolchain de JavascriptDesenredando el toolchain de Javascript
Desenredando el toolchain de Javascript
 
Vagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoVagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de uso
 
Despliegue de aplicaciones PHP
Despliegue de aplicaciones PHPDespliegue de aplicaciones PHP
Despliegue de aplicaciones PHP
 
Construccion de proyectos con gradle
Construccion de proyectos con gradleConstruccion de proyectos con gradle
Construccion de proyectos con gradle
 
Taller docker _es-cl
Taller docker _es-clTaller docker _es-cl
Taller docker _es-cl
 
6/9 Curso JEE5, Soa, Web Services, ESB y XML
6/9 Curso JEE5, Soa, Web Services, ESB y XML6/9 Curso JEE5, Soa, Web Services, ESB y XML
6/9 Curso JEE5, Soa, Web Services, ESB y XML
 
Docker images
Docker imagesDocker images
Docker images
 
Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)
Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)
Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)
 
FROM lost to the docker
FROM lost to the dockerFROM lost to the docker
FROM lost to the docker
 

Destacado

Maven (EN ESPANOL)
Maven (EN ESPANOL)Maven (EN ESPANOL)
Maven (EN ESPANOL)
Rodrigo Branas
 
Modulos
ModulosModulos
Modulos
Luis Bertel
 
Git: control de versiones
Git: control de versionesGit: control de versiones
Git: control de versiones
Moisés Pérez Delgado
 
Presentacion
PresentacionPresentacion
Presentacion
Luis Bertel
 
Listas
ListasListas
Listas
Luis Bertel
 
J unit4
J unit4J unit4
Taller1
Taller1Taller1
Taller1
Luis Bertel
 
Análsis y requerimientos
Análsis y requerimientosAnálsis y requerimientos
Análsis y requerimientos
Luis Bertel
 
Rc094 010d-git 2 - desconocido
Rc094 010d-git 2 - desconocidoRc094 010d-git 2 - desconocido
Rc094 010d-git 2 - desconocido
Luis Bertel
 
Silverlight
SilverlightSilverlight
Silverlight
pradeepfdo
 
Deploy and Publish Web Service
Deploy and Publish Web ServiceDeploy and Publish Web Service
Deploy and Publish Web Service
pradeepfdo
 
Regla del Boy Scout y la Oxidación del Software
Regla del Boy Scout y la Oxidación del SoftwareRegla del Boy Scout y la Oxidación del Software
Regla del Boy Scout y la Oxidación del Software
Alejandro Pérez García
 
JAX-RS 2.0: RESTful Java on Steroids, by Aron Gupta
JAX-RS 2.0: RESTful Java on Steroids, by Aron GuptaJAX-RS 2.0: RESTful Java on Steroids, by Aron Gupta
JAX-RS 2.0: RESTful Java on Steroids, by Aron Gupta
Codemotion
 
JAX-RS 2.0 and OData
JAX-RS 2.0 and ODataJAX-RS 2.0 and OData
JAX-RS 2.0 and OData
Anil Allewar
 
Gradle vs Maven
Gradle vs MavenGradle vs Maven
Gradle vs Maven
Mario García
 
Spring database - part2
Spring database -  part2Spring database -  part2
Spring database - part2
Santosh Kumar Kar
 
Gradle como alternativa a maven
Gradle como alternativa a mavenGradle como alternativa a maven
Gradle como alternativa a maven
David Gómez García
 
Java colombo-deep-dive-into-jax-rs
Java colombo-deep-dive-into-jax-rsJava colombo-deep-dive-into-jax-rs
Java colombo-deep-dive-into-jax-rs
Sagara Gunathunga
 
Introducción a Ganglia
Introducción a GangliaIntroducción a Ganglia
Introducción a Ganglia
Dardo Valdez
 
BDD: Descubriendo qué requiere realmente tu cliente
BDD: Descubriendo qué requiere realmente tu clienteBDD: Descubriendo qué requiere realmente tu cliente
BDD: Descubriendo qué requiere realmente tu cliente
Jorge Gamba
 

Destacado (20)

Maven (EN ESPANOL)
Maven (EN ESPANOL)Maven (EN ESPANOL)
Maven (EN ESPANOL)
 
Modulos
ModulosModulos
Modulos
 
Git: control de versiones
Git: control de versionesGit: control de versiones
Git: control de versiones
 
Presentacion
PresentacionPresentacion
Presentacion
 
Listas
ListasListas
Listas
 
J unit4
J unit4J unit4
J unit4
 
Taller1
Taller1Taller1
Taller1
 
Análsis y requerimientos
Análsis y requerimientosAnálsis y requerimientos
Análsis y requerimientos
 
Rc094 010d-git 2 - desconocido
Rc094 010d-git 2 - desconocidoRc094 010d-git 2 - desconocido
Rc094 010d-git 2 - desconocido
 
Silverlight
SilverlightSilverlight
Silverlight
 
Deploy and Publish Web Service
Deploy and Publish Web ServiceDeploy and Publish Web Service
Deploy and Publish Web Service
 
Regla del Boy Scout y la Oxidación del Software
Regla del Boy Scout y la Oxidación del SoftwareRegla del Boy Scout y la Oxidación del Software
Regla del Boy Scout y la Oxidación del Software
 
JAX-RS 2.0: RESTful Java on Steroids, by Aron Gupta
JAX-RS 2.0: RESTful Java on Steroids, by Aron GuptaJAX-RS 2.0: RESTful Java on Steroids, by Aron Gupta
JAX-RS 2.0: RESTful Java on Steroids, by Aron Gupta
 
JAX-RS 2.0 and OData
JAX-RS 2.0 and ODataJAX-RS 2.0 and OData
JAX-RS 2.0 and OData
 
Gradle vs Maven
Gradle vs MavenGradle vs Maven
Gradle vs Maven
 
Spring database - part2
Spring database -  part2Spring database -  part2
Spring database - part2
 
Gradle como alternativa a maven
Gradle como alternativa a mavenGradle como alternativa a maven
Gradle como alternativa a maven
 
Java colombo-deep-dive-into-jax-rs
Java colombo-deep-dive-into-jax-rsJava colombo-deep-dive-into-jax-rs
Java colombo-deep-dive-into-jax-rs
 
Introducción a Ganglia
Introducción a GangliaIntroducción a Ganglia
Introducción a Ganglia
 
BDD: Descubriendo qué requiere realmente tu cliente
BDD: Descubriendo qué requiere realmente tu clienteBDD: Descubriendo qué requiere realmente tu cliente
BDD: Descubriendo qué requiere realmente tu cliente
 

Similar a Maven Overview

Proyectos java-con-maven
Proyectos java-con-mavenProyectos java-con-maven
Proyectos java-con-maven
Juan Vladimir
 
Lp II clase03 - Entornos de Desarrollo
Lp II clase03 - Entornos de DesarrolloLp II clase03 - Entornos de Desarrollo
Lp II clase03 - Entornos de Desarrollo
AngelDX
 
Curso avanzado de capacitación en DSpace
Curso avanzado de capacitación en DSpaceCurso avanzado de capacitación en DSpace
Curso avanzado de capacitación en DSpace
Servicio de Difusión de la Creación Intelectual (SEDICI)
 
Gestión de proyectos con Maven
Gestión de proyectos con MavenGestión de proyectos con Maven
Gestión de proyectos con Maven
Víctor Leonel Orozco López
 
Maven
MavenMaven
Maven
MavenMaven
Maven
MavenMaven
Maven
jose diaz
 
Subversion
SubversionSubversion
Subversion
Ixchel Muffin
 
La Arquitectura De Netbeans V2
La Arquitectura De Netbeans V2La Arquitectura De Netbeans V2
La Arquitectura De Netbeans V2
ralphkui
 
Test Automation using seleniun webdrive.pdf
Test Automation using seleniun webdrive.pdfTest Automation using seleniun webdrive.pdf
Test Automation using seleniun webdrive.pdf
jose darwin valentin vicente
 
Modulo Jee Practica Pos Fp Une
Modulo Jee Practica  Pos Fp UneModulo Jee Practica  Pos Fp Une
Modulo Jee Practica Pos Fp Une
Marcos Jara
 
Manual tecnico umasoft
Manual tecnico umasoftManual tecnico umasoft
Manual tecnico umasoft
jhosmar Parra Montaño
 
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2 JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
César Pajares
 
Framework kahana
Framework kahanaFramework kahana
Framework kahana
H31D1
 
spring framework
spring frameworkspring framework
spring framework
rossanadaysi
 
Symfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony FrameworkSymfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony Framework
excedesoft
 
Presentación SUbversion
Presentación SUbversionPresentación SUbversion
Presentación SUbversion
rxif914u41
 
Presentacion Subversion
Presentacion SubversionPresentacion Subversion
Presentacion Subversion
Cesar Yanez
 
Semana9 Vbr
Semana9 VbrSemana9 Vbr
Semana9 Vbr
Carlos Luna
 
Presentacion portlets-tools
Presentacion portlets-toolsPresentacion portlets-tools
Presentacion portlets-tools
guest696b01
 

Similar a Maven Overview (20)

Proyectos java-con-maven
Proyectos java-con-mavenProyectos java-con-maven
Proyectos java-con-maven
 
Lp II clase03 - Entornos de Desarrollo
Lp II clase03 - Entornos de DesarrolloLp II clase03 - Entornos de Desarrollo
Lp II clase03 - Entornos de Desarrollo
 
Curso avanzado de capacitación en DSpace
Curso avanzado de capacitación en DSpaceCurso avanzado de capacitación en DSpace
Curso avanzado de capacitación en DSpace
 
Gestión de proyectos con Maven
Gestión de proyectos con MavenGestión de proyectos con Maven
Gestión de proyectos con Maven
 
Maven
MavenMaven
Maven
 
Maven
MavenMaven
Maven
 
Maven
MavenMaven
Maven
 
Subversion
SubversionSubversion
Subversion
 
La Arquitectura De Netbeans V2
La Arquitectura De Netbeans V2La Arquitectura De Netbeans V2
La Arquitectura De Netbeans V2
 
Test Automation using seleniun webdrive.pdf
Test Automation using seleniun webdrive.pdfTest Automation using seleniun webdrive.pdf
Test Automation using seleniun webdrive.pdf
 
Modulo Jee Practica Pos Fp Une
Modulo Jee Practica  Pos Fp UneModulo Jee Practica  Pos Fp Une
Modulo Jee Practica Pos Fp Une
 
Manual tecnico umasoft
Manual tecnico umasoftManual tecnico umasoft
Manual tecnico umasoft
 
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2 JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
 
Framework kahana
Framework kahanaFramework kahana
Framework kahana
 
spring framework
spring frameworkspring framework
spring framework
 
Symfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony FrameworkSymfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony Framework
 
Presentación SUbversion
Presentación SUbversionPresentación SUbversion
Presentación SUbversion
 
Presentacion Subversion
Presentacion SubversionPresentacion Subversion
Presentacion Subversion
 
Semana9 Vbr
Semana9 VbrSemana9 Vbr
Semana9 Vbr
 
Presentacion portlets-tools
Presentacion portlets-toolsPresentacion portlets-tools
Presentacion portlets-tools
 

Maven Overview

  • 1.
  • 2. Maven es una herramienta para la gestión y construcción de proyectos Java fue creada por Jason Van Zyl. De sonatype. En 2002, características: • Funcionalidad similar a Apache Ant • Fichero de configuración por un xml • Para cada proyecto tiene un fichero llamado pom.xml (Project Object Model) para describir el proyecto de software a construir, sus dependencias de otros módulos o componentes externos, etc.
  • 3. Requisitos Antes de instalar maven tenemos que tener los siguiente: •Java 5 •JAVA_HOME Instalación Windows Descomprimimos el archivo zip de la versión recomendada (apache-maven-XXX-bin.zip) C:apache-maven-2.0.8 Agregamos el directorio bin del directorio creado a la variable PATH del SO: "C:apache-maven-2.0.8bin";%PATH% Acto seguido procedemos a ejecutar desde línea de comandos la siguiente instrucción: mvn --version
  • 4. Repositorio (Repository) El funcionamiento de Maven se basa en el uso de un repositorio a donde ir a buscar las dependencias. La identificación de los artefactos que necesita se hace a través del sistema de coordenadas que asegura que cada dependencia sea única y proveer una ruta para conseguirla. El repositorio por default es el repositorio central de Maven. A este repositorio se suman otros repositorios, un repositorio local y la posibilidad de utilizar un repositorio/proxy. Cuando Maven sale a buscar y consigue una dependencia la guarda en el repositorio local que es un directorio en la máquina del usuario (~/.m2/repository). Las siguientes veces que necesite esta dependencia irá la conseguirá en el directorio local haciéndolo mucho más rápido que la primera vez. El directorio central y los directorios de terceros en lo único que se diferencian es en que se va a encontrar en cada uno. En el repositorio central de Maven podemos esperar encontrar la mayoría de las dependencias que necesitemos como JUnit, Java, Spring, Hibernate, etc. El repositorio/proxy es un servicio que podemos instalar en la LAN para cumplir una función similar a la del repositorio local pero compartido por un grupo de usuarios. Esto, además de mejorar la performance, permite tener un mayor control de las versiones de dependencias que se utilizarán.
  • 5.
  • 6. Arquetipo (Archetype) La descripción y administración de un proyecto con Maven requiere que el proyecto tenga una estructura determinada y que tenga el pom.xml correspondientes. Existe un plugin en Maven que permite generar la estructura y configuración inicial de un proyecto a partir de una plantilla. Estas plantillas con llamadas archetypes (arquetipos) y el plugin que permite la generación a partir de los arquetipos se llama también archetype. Los arquetipos pueden publicarse en un repositorio al igual que cualquier otro artefacto. Perfiles (Profiles) Maven está diseñado para maximizar la portabilidad de los artefactos. Es posible redefinir prácticamente cualquier parte de un POM definiendo un perfil. Pueden definirse varios perfiles. La activación de un perfil puede dispararse por uno o una combinación de las siguientes evaluaciones: •Sistema operativo •Variables de entorno del sistema operativo
  • 7. Ciclo de Vida (Lifecycle) Maven utiliza el concepto de ciclo de vida para ejecutar una secuencia ordenada de pasos denominados fases. Existen 3 ciclos de vida en Maven : • clean: Elimina las clases compilas y los archivos generados • default: Genera los archivos binarios de nuestro artefacto(por defecto) • site: Genera archivos html que describe nuestro artefacto Este ciclo de vida define la secuencia de fases que va desde validar la integridad hasta el despliegue en su instalación final de un proyecto. Cuando se solicita la ejecución de una fase Maven ejecuta primero todas las fases anteriores siguiendo la secuencia y termina en la fase solicitada. Cuando la ejecución llega a una determinada fase, Maven busca los plugins que estén adjuntados a la misma y ejecuta los goals correspondientes. Pueden existir ninguno o más plugins asociados a una fase. Fases asociadas al ciclo de vida de clean: • pre-clean • clean • post-clean Fases asociadas al ciclo de vida de site: • pre-site • site • post-site • site-deploy
  • 8. Fases asociados al ciclo de vida default: • validate • initialize • generate-sources • process-sources • generate-resources • process-resources • compile • process-classes • generate-test-sources • process-test-sources • generate-test-resources • process-test-resources • test-compile • process-test-classes • test •prepare-package (maven 2.1+) •package •pre-integration-test •integration-test •post-integration-test •verify •install •deploy
  • 9.
  • 10. Goal, mojo y plugin Los Goals de Maven son las unidades mínimas de ejecución. El artefacto que recoge un goal es un mojo (Maven Plain Old Java Object) un conjunto de mojos forma un plugin. Los plugins pueden instalarse y distribuirse mediante Los repositorios. Invocación de los plugin en maven: Desde linea de comando: mvn groupId:artifactId:version:goal Desde el pom.xml. (Maven también permite hacer prefijos a los plugins y nombre cortos ) Dependencias Una dependencia es una referencia en el POM de la librería que se desea incluir en el proyecto. Existen 6 ámbitos en los que una dependencia puede ser declarada limitando así su transitividad. Compile: ámbito por defecto. Las dependencias están disponibles en el proyecto y en sus proyectos dependientes. Provide: se espera que el JDK, la aplicación o el contenedor provea la dependencia. Runtime: la dependencia no es requerida en tiempo de compilación pero sí para la ejecución. Test: son dependencias que son requeridas solo cuando se compila y ejecuta los test. System: similar a provided pero se le debe indicar el jar que contiene la dependencia Import: (a partir a la versión 2.0.9) solo es usado en una dependencia del tipo POM en la sección indica que el POM utilizado debe ser remplazado con las dependencias que éste tenga en su sección
  • 11. Coordenadas (Coordinates) Las coordenadas de Maven es la forma de identificar a un proyecto, dependencia, plugin o artefacto de forma única en un pom y en un repositorio. Una coordenada se compone de los siguientes identificadores: groupId:artefactId:version. A veces es necesario generar dos empaquetados distintos de una misma versión por cuestiones técnicas, por ejemplo un mismo artefacto para correr sobre dos entornos diferentes. En esta situación se puede utilizar un identificador más: groupId:artefactId:version:classifier. Al momento de producir artefactos, estos cuatro identificadores funcionan en conjunto con uno más, pero que no forma parte de la coordenada: packaging y que se refiere al tipo de empaquetado del artefacto (ejs: zip, jar, ear). De hecho no es posible tener en el repositorio dos artefactos de la misma versión pero con diferente empaquetado.
  • 12. •groupId nombre bajo el que se agrupan una serie de artefactos (ej: junit, spring, org.xyx, com.tm.projectox'). •artifactId identificacion de la unidad mínima administrada por el repositorio (ej: junit, modulo Ejb, ejb- api, servlet-api). •version la versión del artefacto con la siguiente nomenclatura <major version>.<minor version>.<incremental version>-<qualifier>. •classifier clasificador que permite diferenciar iguales versiones pero preparadas o compiladas para diferentes entornos. •packaging no forma parte de la coordenada y sólo se utiliza al momento de generar un artefacto. Define el formato del empaquetado (ejs: jar, war, zip, pom). Herencia Los POMs pueden heredar de otro POM que se defina como parent. La raiz implícita desde donde heredan todos los POMs es el Super POM definido por Maven.
  • 13. La estructura de directorios estándar de maven es la siguiente: •src/main/java Fuentes de la Aplicación/Librería •src/main/resources Recursos de la Aplicación/Librería •src/main/filters Ficheros de filtros •src/main/assembly Descriptores del Assembly •src/main/config Ficheros de configuración •src/main/webapp Fuentes de la aplicación Web •src/main/sql Scripts de bbdd •src/test/java Fuentes de los Test •src/test/resources Recursos de los Test •src/test/filters Ficheros de filtros para los Test •src/site Documentación “apt” sobre el proyecto •target Directorio donde Maven deja los resultados •target/classes Resultado de la compilación. •LICENSE.txt Licencia del Proyecto •README.txt Readme del Proyecto •pom.xml Descriptor Maven del proyecto
  • 14. Configuración mínima para el funcionamiento del pom.xml. Añadiendo repositorios
  • 15. Añadiendo perfiles. Para invocar un perfil desde consola: mvn –PidPerfil
  • 22. Listado plugins mas usado: •Compila el proyecto con versión que deseamos : maven-compiler-plugin •Generar jar : maven-jar-plugin •Copia las dependencias de nuestro proyecto : maven-dependency-plugin •Generar .project y .classpath : maven-eclipse-plugin •Codifica los ficheros de src/main/resources : maven-resources-plugin •Generar un único jar con todas las dependecias : maven-shade-plugin •Generar war : maven-war-plugin •Desplegar un proyecto web tomcat : tomcat-maven-plugin •Desplegar un proyecto web jetty : maven-jetty-plugin •Comprimir javaScript de un proyecto web : yuicompressor-maven-plugin •Notificar cambios nuestro proyecto : maven-changes-plugin •Generar nuestro informe de CheckStyle : maven-checkstyle-plugin •Generar el javaDoc : maven-javadoc-plugin •Generar el PMD : maven-pmd-plugin •Generar la cobertura : cobertura-maven-plugin •Generar documentacion test: maven-surefire-plugin •Generar diferentes tipos compresiones : maven-assembly-plugin •Ayuda sobre el proyecto y plugins : maven-help-plugin •Versiones de dependencias y plugins: versions-maven-plugin
  • 23. La siguiente es una lista de los administradores de repositorios Maven conocidos y enumerados en el orden cronológico de aparición en la comunidad: •Sonatype Nexus •Artifactory •Apache Archiva