75
© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

Embed Size (px)

Citation preview

Page 1: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Introducción a Maven 2.0

TELEFÓNICA I+DCarlos Gómez Fecha: 25/03/2009

Page 2: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

2TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

01 Introducción

02 Conceptos maven

03 Construcción de un proyecto

- Creación proyecto - Control de versiones

- Repositorios - Arquetipos

- Dependencias - Perfiles

- Plugins - Site y documentación

04 Maven en TID

05 Conclusiones

Índice

Page 3: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

3TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

01 Introducción

02 Conceptos maven

03 Construcción de un proyecto

- Creación proyecto - Control de versiones

- Repositorios - Arquetipos

- Dependencias - Perfiles

- Plugins - Site y documentación

04 Maven en TID

05 Conclusiones

Índice

Page 4: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

4TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

¿Qué es maven?

Herramienta para gestión y construcción proyectos java

Lo que teníamos hasta ahora era:

— Ant

— Makefiles

— IDE

— Shell/Perl Scripts

01

Page 5: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

5TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Aplicar patrones para la construcción de proyectos

Builds

Documentación

Informes

Dependencias

Integración con repositorios

Generación de releases

Distribución

Web del proyecto

01

Page 6: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

6TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

¿Qué nos proporciona?

Un modelo estándar para gestionar y describir proyectos

— Encapsula mejores prácticas

— Bajo coste de configuración y mantenimiento

— Fácil integración de nuevas herramientas

Tras la instalación, dispondremos de funcionalidades que nos facilitarán tareas a distintos niveles

— Inicialización de proyectos, integración con IDEs, configuración de proyectos (JDKs, dependencias, ...)

Procedimientos por defecto para la realización de las tareas base

Compilación, pruebas unitarias, empaquetado,...

— Simplifica y unifica los procesos de distribución, mantenimiento de la documentación, instalación, ...

01

Page 7: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

7TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

¿Qué nos proporciona?

Estructuras comprensibles que eviten cosas como...

01

Page 8: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

8TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

01 Introducción

02 Conceptos maven

03 Construcción de un proyecto

- Creación proyecto - Control de versiones

- Repositorios - Arquetipos

- Dependencias - Perfiles

- Plugins - Site y documentación

04 Maven en TID

05 Conclusiones

Índice

Page 9: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

9TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Conceptos maven Estructura de directorios

Estructura de directorios predefinida

— Estandarización

— Fácil comprensión

Facilita las operaciones con los Sistemas de Control de Versiones, de Gestión de Requisitos, …

02

Page 10: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

10TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Conceptos mavenCiclos de vida

Tres ciclos

— Inicialización

— Construcción

— Documentación

02

http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

Page 11: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

11TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Conceptos mavenCiclo de vida asociado al proceso de construcción

Este proceso de construcción permite a los desarrolladores ir cambiando de proyectos, sin necesidad de tener que aprender nuevos procesos

validate

initialize

process-resources

generate-resources

generate-sources

process-sources

compile

process-class

generate-test-sources

compile-test

process-test-resources

process-test-sources

generate-test-sources

test

package

pre-integration-test

install

verify

integration-test

post-integration-test

deploy

02

Page 12: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

12TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Conceptos mavenCiclo de vida asociado a la inicialización

pre-clean

clean

post-clean

02

Page 13: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

13TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Conceptos mavenCiclo de vida asociado a la documentación

pre-site

site

post-site

deploy-site

02

Page 14: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

14TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Conceptos Maven POM

pom.xml (Project Object Model)— Unidad de trabajo fundamental en Maven

— Describe la configuración del proyecto

– Nombre y descripción

– Dependencias de otros otros proyectos

– Requisitos de la construcción

– Información

– Empresa y desarrolladores

– Licencias

– Documentación del proyecto

02

Page 15: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

15TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Conceptos maven Árbol POM

02

Page 16: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

16TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Conceptos Maven POM mínimo

Lo único necesario para invocar a Maven para construir un JAR, WAR, etc. Si se está utilizando la estructura de ficheros fuentes por defecto

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion><groupId>es.tid.ad.seminar</groupId><artifactId>ms</artifactId><version>0.0.1-SNAPSHOT</version><name>Seminario de spring y maven</name><packaging>jar</packaging> <!-- optional for JAR -->

</project>

02

Page 17: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

17TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

01 Introducción

02 Conceptos maven

03 Construcción de un proyecto

- Creación proyecto - Control de versiones

- Repositorios - Arquetipos

- Dependencias - Perfiles

- Plugins - Site y documentación

04 Maven en TID

05 Conclusiones

Índice

Page 18: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

18TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Construcción de un proyecto Creación proyecto

Creación de un proyecto a partir de un arquetipo genérico

Estructura inicial:

mvn archetype:generate -DgroupId=com.mycompany.app-DartifactId=app -Dversion=0.0.1-SNAPSHOT –DinteractiveMode=false

03

Page 19: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

19TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Construcción de un proyecto Compilación

Compilación del proyecto

Resultado compilación:

mvn compile

03

Page 20: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

20TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Construcción de un proyecto Ejecución de test

Ejecución de test

Resultado test:

mvn test

03

Page 21: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

21TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Construcción de un proyecto Empaquetado

Ejecución del empaquetado

Resultado:

mvn package

03

Page 22: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

22TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Construcción de un proyecto Instalación en el repositorio local

Ejecución de la instalación en un repositorio local

Resultado instalación:

mvn install

03

Page 23: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

23TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Construyendo un proyecto Resumen construcción

El resultado del proyecto es un artifact (componente)

— Los goals (objetivos) más comunes para la construcción son:

– compile – Compila el código

– test – Testea el código

– package – Empaqueta el componente (jar,war,ear, …)

– install – Instala el componente en el repositorio local

– deploy – Instala el componente en el repositorio remoto

– eclipse:eclipse – Adapta el componente a eclipse

— Ej: Incialización empaquetado de un componentemvn clean package

deployinstallpackagetestcompile

03

Page 24: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

24TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

01 Introducción

02 Conceptos maven

03 Construcción de un proyecto

- Creación proyecto - Control de versiones

- Repositorios - Arquetipos

- Dependencias - Perfiles

- Plugins - Site y documentación

04 Maven en TID

05 Conclusiones

Índice

Page 25: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

25TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Repositorios

Los artifacts(componente/proyecto) son almacenados en:

— Repositorio Local: Funciona a modo de caché de todos los artifacts utilizados en los proyectos que hay instalados en la máquina (Por defecto en: $HOME/.m2/repository para linux o C:\Documents and Settings\<user>\.m2\repository para windows)

— Repositorio remoto: Accesible a través de http, https o scp al almacén de componentes

El repositorio Central de Maven contiene los artifacts más comunes (unos 50000)

— http://repo1.maven.org/maven2

03

Page 26: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

26TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Repositorios

Configuración de repositorios(I)

— pom.xml

<distributionManagement> <!– Repositorio de componentes estables-->

<repository><id>repos-release</id> <name>Repositorio de componentes de TID</name> <url>http://reposbcn.hi.inet:8081/nexus/content/repositories/tidRelease/</url>

</repository> <!– Repositorio de componentes inestables-->

<snapshotRepository> <id>repo-snapshot</id>

<name>Repositorio de snapshots componentes</name> <url>http://reposbcn.hi.inet:8081/nexus/content/

repositories/tidSnapshot/ </url> </snapshotRepository>...

03

Page 27: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

27TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Repositorios

Configuración de repositorios (II)

— pom.xml

…<!– Repositorio de documentación del proyecto --><site>

<id>reposbcn-site</id> <url> scp://reposbcn.hi.inet/home/maven/MAVEN/site/${project.groupId} /${artufactId}</url>

</site></distributionManagement>

03

En http://reposbcn.hi.inet/maven/site/es.tid.cd.archetypes/standalone-archetype/maven-repositories.html están definidos todos los repositorios en los que se entregan los diferentes componentes

Page 28: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

28TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Repositorios

Configuración de repositorios(III)

— $MAVEN_HOME/conf/settingxs.xml

<server><id>repo-release</id> <username>admin</username> <password>admin123</password>

</server<server> <id>repo-snapshot</id> <username>admin</username> <password>admin123</password> </server><server> <id>repo-site</id> <username>maven</username> <password>ihateant</password> </server>

03

En http://reposbcn.hi.inet/maven/site/es.tid.cd.archetypes/standalone-archetype/maven-configuration.html está disponible la configuración completa de maven

Page 29: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

29TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

01 Introducción

02 Conceptos maven

03 Construcción de un proyecto

- Creación proyecto - Control de versiones

- Repositorios - Arquetipos

- Dependencias - Perfiles

- Plugins - Site y documentación

04 Maven en TID

05 Conclusiones

Índice

Page 30: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

30TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Añadiendo dependencias (I)

Se declaran las dependencias y automáticamente son añadidas al classpath e incluidas en la distribución resultante del componente.— Cada dependencia se ha de incluir dentro de un scope

– compile: Son necesarias para compilar el proyecto (Se incluyen en el classpath de compilación)

– runtime: Son necesarias únicamente para ejecutar el proyecto (Se incluyen en el classpath de ejecución).

– Ej: La librería commons-logging nos abstrae de la librería de trazas que se utilice a la hora de ejecutar el proyecto. Por eso la librería commons-logging se ha de añadir al scope de compile, mientras que la de log4j, sólo es necesario en el scope de runtime

– test: Son necesarias para ejecutar los tests del proyecto (El classpath de ejecución de los test está formado por las dependencias en el scope de compile, runtime y test).

– provided: Son necesarias para la compilación del proyecto, pero no se han de entregar en el paquete.

– Ej: La librería servlet-api es necesaria para compilar servlets, pero esta librería ya la incluyen los servidores de aplicaciones (En tomcat $TOMCAT_HOME/lib/servlet-api.jar) y no hay que incluirla en el WAR.

– system: Esta dependencia está instalada en la misma máquina, y por tanto se apunta a la ruta donde está instalada. El efecto es el mismo que el scope de compile.

03

Page 31: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

31TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Añadiendo dependencias (I)

Ejemplo:

<dependencies> <dependency> <groupId>

commons-logging</groupId>

<artifactId>commons-logging-api</artifactId> <version>1.1.1</version>

<scope>compile</scope> </dependency> <dependency>

<groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.15</version><scope>runtime</scope>

</dependency>

<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet.api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency>

<groupId>junit</groupId><artifactId>junit</artifactId><version>4.5</version><scope>test</scope>

</dependency></dependencies>

03

Page 32: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

32TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Añadiendo dependencias (II)

Maven soporta dependencias transitivas, es decir, que cuando se inserta una dependencia, si esta depende de otras, estas otras se añaden al classpath. Si no son necesarias, hay que excluirlas:<dependencies>

<dependency> <groupId>commons-logging </groupId> <artifactId>commons-logging-api</artifactId>

<version>1.1.1</version> <scope>compile</scope> <exclusions> <exclusion> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> </exclusion> <exclusion> <groupId>logkit</groupId> <artifactId>logkit</artifactId> </exclusion> <exclusion> <groupId>avalon-framework</groupId> <artifactId>avalon-framework</artifactId> </exclusion>

</exclusions> </dependency>

03

Page 33: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

33TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

01 Introducción

02 Conceptos maven

03 Construcción de un proyecto

- Creación proyecto - Control de versiones

- Repositorios - Arquetipos

- Dependencias - Perfiles

- Plugins - Site y documentación

04 Maven en TID

05 Conclusiones

Índice

Page 34: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

34TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Plugins

Se encargan de personalizar el proceso de construcción de un proyecto maven.

Se configuran en la sección de build ( y en la de site para generación de la Web del proyecto)

<build><plugins><!-- modificar las opciones del compilador --> <plugin> <artifactId>maven-compiler-plugin</artifactId>

<configuration> <source>1.6</source> <target>1.6</target> <encoding>utf-8</encoding> <debug>false</debug> <optimize>true</optimize> </configuration> </plugin> </plugins></build>

03

Page 35: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

35TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Plugins

Ej 2: Definición del empaquetado de un proyecto<!-- Definición del empaquetado del proyecto --> <plugin> <artifactId>maven-assembly-plugin</artifactId> <!-- CONFIGURACIÓN PARAMETROS --> <configuration> <filters> <filter>src/main/filters/${env}.properties</filter> <!-- Para un entorno en concreto --> </filters> <descriptors> <descriptor>src/main/assembly/dep.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>make-assembly</id> <phase>install</phase> <!-- FASE EN LA QUE SE EJECUTA ESTE PLUGIN. --> <goals> <goal>single</goal> <!– METODO DEL PLUGIN QUE SE EJECUTARÁ LA FASE DE INSTALL --> <!-- Ver http://maven.apache.org/plugins/maven-assembly-plugin/plugin-info.html --> </goals> </execution> </executions> </plugin>

03

Page 36: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

36TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Plugins Plugins estándar de maven

Core

— Clean

— Compiler

— Deploy

— Install

— Resources

— Site

— Surefire

— Verifier

Integration

— Eclipse

— Idea

Packaging— Ear

— Ejb

— Jar

— Rar

— War

Reporting— Changelog

— Changes

— Checkstyle

— Clover

— Javadocs

— PMD

— Surefire-reports

Tools

— Ant

— Archetype

— Assembly

— Dependency

— Help

— Release

— SCM

— ...

Others

— cargo

— Jetty

— ...

03

Page 37: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

37TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Plugins Invocación plugins

Dos formas:

Ejemplos:

— mvn site:site (Genera la documentación del proyecto)

— mvn site:deploy (Copia la documentación del proyecto en un repositorio remoto)

— mvn scm:checkout (Hace un checkout del proyecto)

mvn plugin:goal

mvn pluginGroupId:pluginArtifactId:pluginVersion:goal

03

Page 38: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

38TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

01 Introducción

02 Conceptos maven

03 Construcción de un proyecto

- Creación proyecto - Control de versiones

- Repositorios - Arquetipos

- Dependencias - Perfiles

- Plugins - Site y documentación

04 Maven en TID

05 Conclusiones

Índice

Page 39: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

39TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Control de versiones

Maven permite integrarse con la mayoría de sistemas de control de versiones: (CVS, SVN, …). Para ello:

— Configurar POM para acceder al repositorio

— Configurar POM para realizar release del proyecto

03

Page 40: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

40TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Control de versiones Acceso al repositorio

Configuración en el POM

<scm> <url>http://reposbcn.hi.inet/repositorio/publicidad/carlosg/trunk/cxf</url> <!-- Acceso modo lectura anónimo -->  <connection>

scm:svn:http://reposbcn.hi.inet/repositorio/publicidad/carlosg/trunk/cxf </connection> <!-- Acceso modo lectura/escritura NO anónimo -->  <developerConnection>

scm:svn:https://reposbcn.hi.inet/repositorio/publicidad/carlosg/trunk/cxf </developerConnection>

 </scm>

03

Page 41: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

41TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Control de versiones Acceso al repositorio. Configuración maven-scm-plugin

POM para hacer checkout, checkin, update, … (http://maven.apache.org/scm/plugins/)

<build><plugins> <!-- integración con SVN  --> <plugin>  <groupId>org.apache.maven.plugins</groupId>   <artifactId>maven-scm-plugin</artifactId>   <version>1.0</version> <configuration>  <goals>install</goals> <!-- Se descarga el proyecto, lo compila, pasa los tests, lo empaqueta y lo instala en el repositorio local -->  <checkoutDirectory>/home/cm/CM/dev/eclipse/workspace</checkoutDirectory>   <username>carlosg</username>   <password>mipassword</password>   <tagBase> scm:svn:https://reposbcn.hi.inet/repositorio/commovistar/tags </tagBase>   </configuration>  </plugin></plugins></build>

mvn scm:checkout / mvn scm:checking

03

Page 42: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

42TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

POM para hacer release (http://maven.apache.org/plugins/maven-release-plugin/)<build>

<plugins> <!-- integración con SVN  --> <plugin>  <groupId>org.apache.maven.plugins</groupId>   <artifactId>maven-release-plugin</artifactId>   <version>1.0</version> <configuration>  <username>carlosg</username>   <password>mipassword</password>   <tagBase>https://reposbcn.hi.inet/repositorio/publicidad/carlosg/tags </tagBase>   </configuration>  </plugin></plugins></build>

mvn release:prepare Compila, pasa los test y genera tag en el repositorio

mvn release:perform Se descarga el contenido del tag generado, compila, pasa test, genera el “.jar” con la versión y lo entrega en el repositorio y genera la documentación

Control de versiones Generación release. Configuración maven-release-plugin

03

Page 43: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

43TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

01 Introducción

02 Conceptos maven

03 Construcción de un proyecto

- Creación proyecto - Control de versiones

- Repositorios - Arquetipos

- Dependencias - Perfiles

- Plugins - Site y documentación

04 Maven en TID

05 Conclusiones

Índice

Page 44: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

44TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Arquetipos

Para empezar un proyecto se puede elegir un patrón de proyecto o arquetipo.

Un arquetipo es un proyecto MAVEN, con su propio pom.xml

En el fichero archetype.xml se definen los diferentes ficheros que forman la plantilla

Se crea a partir de mvn archetype:generate

Ej: Arquetipo para crear una aplicación JSF

mvn archetype:generate -DgroupId=es.tid.icm.cm -DartifactId=jsf-app-sample -DarchetypeArtifactId=maven-archetype-jsfapp -DarchetypeGroupId=es.tid.formacion -DarchetypeVersion=1.0-SNAPSHOT -DremoteRepositories=http://ironman.hi.inet:7777/maven

03

Page 45: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

45TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Arquetipos Estructura de un archetipo

03

Page 46: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

46TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

ArquetiposEjemplo: Construcción de un proyecto JSF

Ej: Arquetipo para crear una aplicación JSF

Creando el proyecto con el arquetipo

03

mvn archetype:generate -DgroupId=es.tid.icm.cm -DartifactId=jsf-app-sample -DarchetypeArtifactId=maven-archetype-jsfapp -DarchetypeGroupId=es.tid.formacion -DarchetypeVersion=0.0.1-SNAPSHOT -DremoteRepositories=http://ironman.hi.inet:7777/maven –DinteractiveMode=false

Page 47: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

47TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

ArquetiposEjemplo: Construcción de un proyecto JSF Proyecto creado

03

Page 48: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

48TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

ArquetiposEjemplo: Construcción de un proyecto JSF Adaptación del proyecto a eclipse

03

Page 49: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

49TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

ArquetiposEjemplo: Construcción de un proyecto JSF Proyecto adaptado a eclipse

03

Page 50: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

50TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

ArquetiposEjemplo: Construcción de un proyecto JSF Insertando proyecto en eclipse

03

Page 51: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

51TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

ArquetiposEjemplo: Construcción de un proyecto JSF Insertando proyecto en eclipse (II)

03

Page 52: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

52TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

ArquetiposEjemplo: Construcción de un proyecto JSF Insertando proyecto en eclipse (III)

03

Page 53: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

53TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

ArquetiposEjemplo: Construcción de un proyecto JSF Insertando proyecto en eclipse (IV)

03

Page 54: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

54TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

01 Introducción

02 Conceptos maven

03 Construcción de un proyecto

- Creación proyecto - Control de versiones

- Repositorios - Arquetipos

- Dependencias - Perfiles

- Plugins - Site y documentación

04 Maven en TID

05 Conclusiones

Índice

Page 55: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

55TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Perfiles de construcción

Modifica la construcción del proyecto dependiendo del entorno:

— Dependencias, repositorios y plugins

El perfil puede ser seleccionado por:

— El sistema operativo, JDK, la existencia de algún software, o bien a través de la línea de comandos.

— Por usuario o por proyecto

Y puede ser usado para entornos estándar

— Desarrollo, Integración y Producción

03

Page 56: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

56TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Perfiles de construcción

Ejemplo:

— Configuración de los repositorios (Se incluyen en el pom.xml, settings.xml ó en profiles.xml)

<profiles> <!-- Profile desarrollo (Activo por defecto) --> <profile> <id>development</id> <activation><activeByDefault>true</activeByDefault> </activation> <properties> <env>development</env> <compiler.info.debug>true</compiler.info.debug> <compiler.optimize>false</compiler.optimize> </properties> </profile> <!-- Producción --> <profile> <id>production</id> <activation> <activeByDefault>false</activeByDefault> </activation> <properties> <env>production</env> <compiler.info.debug>false</compiler.info.debug> <compiler.optimize>true</compiler.optimize> </properties> </profile> <!-- Integration --> …

03

Page 57: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

57TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

01 Introducción

02 Conceptos maven

03 Construcción de un proyecto

- Creación proyecto - Control de versiones

- Repositorios - Arquetipos

- Dependencias - Perfiles

- Plugins - Site y documentación

04 Maven en TID

05 Conclusiones

Índice

Page 58: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

58TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Site y Documentación

Maven ayuda a la generación de la web del proyecto, añadiendo información del componente de forma “automática”, a partir de la descripción del mismo en el pom.xml

Acepta diferentes formatos de entrada de texto

— APT (Almost Plain Text)

— Xdoc

— FML (Faq Markup Language)

— DocBook

Permite la salida en Xdoc, XHTML, DocBook, Latex y RTF

La generación del site permite la utilización de plantillas de velocity.

03

Page 59: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

59TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Ejemplo de documento APT03

Page 60: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

60TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Ejemplo de documento APT03

Page 61: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

61TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Generando la documentación del proyecto

Creando el site (mvn site:site)

03

Page 62: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

62TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Generando la documentación del proyecto

Resultado de la generación

03

Page 63: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

63TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Generando la documentación del proyecto

Desplegando el site (mvn site:deploy)

03

Page 64: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

64TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Generando la documentación del proyecto

Accediendo a la web del proyecto (I)

03

Page 65: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

65TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Generando la documentación del proyecto

Accediendo a la web del proyecto (II)

03

Page 66: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

66TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Generando la documentación del proyecto

POLÉMICA APT/WIKI

— Ventajas wiki:

– Edición muy sencilla y con posiblidadades de previsualización

– No es necesario compilar la documentación

— Ventjas APT:

– Generación automática de informes

– Toda la documentación asociada al proyecto

03

Page 67: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

67TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

01 Introducción

02 Conceptos maven

03 Construcción de un proyecto

- Creación proyecto - Control de versiones

- Repositorios - Arquetipos

- Dependencias - Perfiles

- Plugins - Site y documentación

04 Maven en TID

05 Conclusiones

Índice

Page 68: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

68TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

MAVEN en TID

Objetivo:

— Utilizar un repositorio de componentes común para compartir todos los componentes

Trabajo colaborativo

— No se trata de que alguien se dedique a hacer componentes para el resto de divisiones o proyectos. Sino que cada uno compartiese volutariamente sus componentes.

— Para conseguirlo habría que definir una guía de buenas prácticas donde se recogiesen, ¿cuáles son los requisitos para compartir un componente?

– Documentación del componente

– Jerarquía de paquetes

– ...

04

Page 69: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

69TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

MAVEN en TID Repositorios “oficiales” de TID

En http://reposbcn.hi.inet:8081/nexus existe un proxy de repositorios.

Repositorios internos (acceso modo lectura/escritura)— http://reposbcn.hi.inet/maven/site/es.tid.cd.archetypes/sta

ndalone-archetype/maven-repositories.html

Repositorios externos (Consultaros en http://reposbcn.hi.inet:8081/nexus)

Repositorio documentación

— http://reposbcn.hi.inet/maven/site/${project.groupId}/${project.artifactId}

04

Page 70: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

70TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

01 Introducción

02 Conceptos maven

03 Construcción de un proyecto

- Creación proyecto - Control de versiones

- Repositorios - Arquetipos

- Dependencias - Perfiles

- Plugins - Site y documentación

04 Maven en TID

05 Conclusiones

Índice

Page 71: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

71TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Conclusiones¿Cómo encaja maven dentro de un proyecto?

Definiendo y manteniendo proyectos de forma estandarizada

Generando informes de los que obtener indicadores para la toma de decisiones

Agilizando los procesos de distribución

Centralizando la información mediante la generación de un sitio web para los proyectos

Integrándose con repositorios de fuentes, sistemas de integración contínua…

05

Page 72: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

72TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Conclusiones

No dedicar más tiempo del necesario a definir procedimientos si herramientas como Maven ya los modelan.

Maven como resultado de la experiencia de otros profesionales.

Existe gran cantidad de plugins que nos permiten trabajar con framework y librerías más conocidas: hibernate, struts, Spring, ... (Cuidadiiiiiiiin!! con los plugins que algunos no están estables, y la mayoría poco documentados).

Permite el trabajo colaborativo

La generación automatizada de código fuente, archivos de configuración, documentación, etc..., aumenta la productividad y reduce el riesgo de errores.

05

Page 73: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

73TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Dudas, preguntas, …

Page 74: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009

74TELEFÓNICA I+D

© 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal

Bibliografía

Web oficial de maven

— http://maven.apache.org

Documentación de maven en reposbcn (Esta presentación)

— http://pimpam.googlecode.com/svn/trunk/standalone-archetype/src/site/resources/Introducci%c3%b3n%20a%20Maven%202.ppt

— Better Builds with maven

— http://www.devzuz.com/c/document_library/get_file?folderId=8&name=DLFE-52.pdf

Page 75: © 2007 Telefónica Investigación y Desarrollo, S.A. Unipersonal Introducción a Maven 2.0 TELEFÓNICA I+D Carlos Gómez Fecha: 25/03/2009