Está en la página 1de 32

ANEXO a la Gua de Esta ndares

Manual de Uso de Maven

1
ndice
1 Introduccin...................................................................................5
2 Qu es Maven?............................................................................5
3 Conceptos bsicos........................................................................5
3.1 Coordenadas del pom....................................................................5
3.2 Transitividad de dependencias.....................................................5
4 Proyecto Maven.............................................................................8
5 El archivo pom...............................................................................9
5.1 Pom relationships..........................................................................9
5.2 Build settings................................................................................11
5.3 General project information.........................................................11
5.4 Build enviroment..........................................................................12
6 Ciclos de vida de construccin.................................................15
6.1 Ciclo de vida clean.......................................................................15
6.1 Ciclo de vida build........................................................................15
6.2 Ciclo de vida site..........................................................................16
7 Plugin............................................................................................17
7.1 Plugin de utilidades......................................................................17

7.1.1 maven-eclipse-plugin_________________________________________17

7.1.2 maven-clean-plugin___________________________________________17

7.2 Plugin para la construccin.........................................................18

7.2.1 maven-compiler-plugin________________________________________18

7.2.2 maven- jar-plugin____________________________________________19

7.2.3 maven-assembly-plugin_______________________________________20

7.2.4 maven-ear-plugin____________________________________________20

7.3 Plugin para informes....................................................................22

7.3.1 maven-site-plugin____________________________________________22

7.3.2 maven-project-info-reports-plugin________________________________23

2
7.3.3 maven-pmd-plugin___________________________________________23

7.3.4 maven-javadoc-plugin_________________________________________24

8 Crear un proyecto desde un arquetipo.....................................26


8.1 Configuracin del settings.xml...................................................26
9 Arquetipo web_was_6_1.............................................................29
9.1 Creacin del proyecto..................................................................29

Tablas e Ilustraciones
Ilustracin 1. Ejemplo de exclusin de dependencias....................................6

Ilustracin 2. Comando para listar dependencias en rbol.............................6

Ilustracin 3. Ejemplo del comando maven dependency:tree........................7

Ilustracin 4. Estructura de un pom................................................................9

Ilustracin 5. Ejemplo de declaracin de mdulos.......................................10

Ilustracin 6. Ejemplo de declaracin de herencia.......................................10

Ilustracin 7. Ejemplo de declaracin de dependencia.................................11

Ilustracin 8. Ejemplo de declaracin de repositorios..................................12

Ilustracin 9. Ejemplo de declaracin de profiles.........................................13

Ilustracin 10. Ejemplo de ejecucin de un profile.......................................14

Ilustracin 11. Ejemplo de configuracin de encoding..................................14

Ilustracin 12. Ejecucin de la fase clean....................................................15

Ilustracin 13. Ejecucin de la fase compile.................................................16

Ilustracin 14. Ejecucin de la fase package...............................................16

Ilustracin 15. Ejecucin de la fase install....................................................16

Ilustracin 16. Ejecucin de la fase site-deploy............................................16

Ilustracin 17. Configuracin de maven-eclipse-plugin................................17

Ilustracin 18. Creacin de archivos para RSA............................................17

Ilustracin 19. Configuracin de maven-clean-plugin...................................18

3
Ilustracin 20. Configuracin de maven-compiler-plugin..............................19

Ilustracin 21. Configuracin de maven-jar-plugin.......................................19

Ilustracin 22. Configuracin de maven-assembly-plugin............................20

Ilustracin 23. Configuracin de maven-ear-plugin......................................21

Ilustracin 24. Configuracin de maven-site-plugin......................................22

Ilustracin 25. Configuracin de maven-site-plugin......................................23

Ilustracin 26. Configuracin de maven-pmd-plugin....................................24

Ilustracin 27. Configuracin de maven-javadoc-plugin...............................24

Ilustracin 28. Configuracin de maven-checkstyle-plugin...........................25

Ilustracin 29. Configuracin de maven-jxr-plugin.......................................25

Ilustracin 30. Ubicacin archivo configuracin maven................................26

Ilustracin 31. Configuracin de repositorio IAM..........................................27

Ilustracin 32. Comando recuperacin arquetipos IAM maven....................28

Ilustracin 33. Listado de arquetipos del IAM...............................................28

Ilustracin 34. Creacin del proyecto web_was_6_1...................................30

Ilustracin 35. Estructura de directorios del arquetipo web_was_6_1..........31

4
1 Introduccin
Este documento describe la forma de generar los archivos de compilacin y la
forma de usar maven para los proyectos desarrollados en el IAM.

2 Qu es Maven?
Maven es una herramienta software para la gestin de proyectos que abarca
un modelo de los objetos del proyecto, la gestin del ciclo de vida, la gestin de
dependencias, etc.

3 Conceptos bsicos
3.1 Coordenadas del pom
Las coordenadas de un pom definen un nombre nico para el artefacto que
define dicho pom. Estas coordenadas tienen como mnimo los siguientes valores:

gropuId: este elemento describe una agrupacin de alto nivel para el


proyecto. Desde el IAM se debe usar el siguiente nombre es.iam.<
areaNegocio>.<acronimoProyecto>. Por ejemplo es.iam.pagos.IVTM
artifactId: este elemento debe describir el artefacto concreto dentro
del groupId. Por ejemplo pojoCurso.
versin: este elemento define la versin del proyecto. Por ejemplo
1.0.12.

3.2 Transitividad de dependencias.


Uno de las caractersticas ms potentes de maven es la transitividad de
dependencias.

Para explicar este concepto vamos a usar un ejemplo sencillo. Supongamos


que un proyecto necesita procesar XML con la biblioteca dom4j. Para el correcto
funcionamiento de la biblioteca dom4j se debe incluir tambin la biblioteca xalan
(entre otras). Con maven no es necesario incluir de forma explcita la biblioteca
xalan dentro de las dependencias del proyecto. Maven al observar que el proyecto
necesita la biblioteca dom4j resolver para la construccin del proyecto todas las
dependencias de dom4j as como las dependencias de las dependencias y as
sucesivamente hasta que no quede ninguna dependencia por resolver.

Este comportamiento facilita la compatibilidad de bibliotecas ya que se


asegura las versiones de las dependencias son compatibles entre s.

5
En algunas ocasiones dos artefactos distintos dependen de la misma
biblioteca pero con distinta versin. En ese caso hay que excluir una de las
dependencias para asegurar que no se use una biblioteca con distintas versiones. A
continuacin se muestra un ejemplo de exclusin de dependencia.

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.2</version>
<exclusions>
<exclusion>
<groupId>org.slf4j </groupId>
<artifactId>slf4j-log4j12 </artifactId>
</exclusion>
</exclusions>
</dependency>

Ilustracin 1. Ejemplo de exclusin de dependencias.

Hay que tener en cuenta que para la generacin de un jar estas


dependencias sern usadas solo durante el proceso de compilacin. En cambio si
se est empaquetando una aplicacin en un WAR todas las bibliotecas declaradas
junto con sus dependencias transitivas sern incluidas dentro del lib del WAR.

Para conocer las dependencias que tiene un proyecto maven proporciona un


plugin por defecto. Este plugin es el maven-dependency-plugin. Si por ejemplo
queremos mostrar una lista en rbol de todas las dependencias de un proyecto
usaremos el siguiente comando.

maven dependency:tree

Ilustracin 2. Comando para listar dependencias en rbol.

Un ejemplo de salida del comando se muestra a continuacin.

6
Ilustracin 3. Ejemplo del comando maven dependency:tree.

7
4 Proyecto Maven
Un proyecto maven es un proyecto de desarrollo que tiene definido un
archivo pom.xml donde se indica a maven la forma de construir el proyecto.

Por defecto un proyecto maven debe tener la siguiente estructura:

pom.xml: el archivo de configuracin del proyecto maven.


src/main/java: donde se encontrarn los archivos java que forman
parte del proyecto.
src/main/resources: donde se encontraran los recursos y ficheros de
propiedades que forman parte del proyecto.
src/main/webapp: en caso de ser un proyecto web bajo est ruta se
encontrar la estructura tpica de un proyecto web (css, js, jsp, WEB-
INF, etc)
src/test/java: donde se encuentran las clases de test del proyecto.
Estas clases no sern empaquetadas dentro del proyecto.
src/test/resources: donde se encuentran los recursos y archivos de
configuracin para los test. Estos archivos no sern empaquetados
con el proyecto.

Normalmente en el IAM los proyectos no tienen solo un modulo sino que


estn organizados en submdulos (WEB, NEG, DAO, WS, Client,). Desde el rea
de calidad del IAM se propone la siguiente configuracin para los proyectos
teniendo en cuenta la divisin en mdulos:

Se crear un pom padre a todos los submdulos.


Este pom padre se ubicar al mismo nivel que las carpetas que
contienen los submdulos (bajo fuentes).
En este pom se definirn todos los elementos comunes de los
submdulos (dependencias, plugins, reporting, etc) y se incluir la
definicin de todos los submdulos del proyecto.
En cada submdulo existir a su vez un pom.xml que defina la
configuracin propia de dicho submdulo. Adems se har referencia
a las coordenadas del pom padre entre las etiquetas <parent> para
heredar la configuracin de este.

8
5 El archivo pom
Los proyectos maven, las dependencias, las construcciones y los artefactos
deben ser descritos. Esta descripcin se realiza a travs de un XML denominado
POM, acrnimo de Project Object Model. El pom se usa para indicar a maven como
debe realizar sus tareas y modificar su comportamiento por defecto.

Tal y como muestra la Ilustracin 4 podemos dividir un pom en cuatro


apartados:

pom relationships: En este apartado se configuran las relaciones y


dependencias del modulo con otros proyectos
build settings: En este apartado se personaliza el comportamiento
de maven.
general project information: Este apartado incluye informacin
general del proyecto como descripcin, desarrolladores,
responsables etc.
build enviroment: En este apartado se configura el entorno para la
ejecucin de maven, pudiendo configurar distintos perfiles que
posteriormente podrn ser activados durante la ejecucin de maven.

Ilustracin 4. Estructura de un pom.

A continuacin describiremos con un poco ms de detalle los distintos


apartados de un pom que son tpicos para un proyecto del IAM.

5.1 Pom relationships


En este apartado se describen las coordenadas del pom. Para ms detalle
puede consultar el apartado 3 Conceptos bsicos.

9
Tambin se indica los distintos mdulos que componen el proyecto en caso
de que el proyecto sea multimodulo. Este apartado ser incluido dentro del pom
padre. A continuacin se muestra un ejemplo de uso.

<modules>

<module>POJO_CURSO</module>

<module>DAO_CURSO</module>

<module>WEB_CURSO </module>

<module>EAR_CURSO </module>

<module>config</module>

</modules>

Ilustracin 5. Ejemplo de declaracin de mdulos.

Este apartado tambin incluye la informacin de herencia de poms. Por lo


general en el IAM los distintos submodulos heredaran del pom padre, lo que implica
que cada submdulo tiene que declarar un parent. A continuacin se muestra un
ejemplo de su uso.

<parent>

<groupId>es.iam.calidad</groupId>

<artifactId>curso</artifactId>

<version>1.0.0-SNAPSHOT</version>

</parent>

Ilustracin 6. Ejemplo de declaracin de herencia.

Por ltimo tambin se aaden en este apartado las distintas dependencias


del proyecto. Las dependencias de un proyecto pueden tener distinto mbito. A
continuacin se van a detallar los distintos mbitos permitidos desde el IAM:

compile: este es el mbito por defecto, si no se indica ninguno


maven presupone este. Son todas las dependencias que se
requieren para compilar el proyecto y que sern empaquetadas.
provided: estas dependencias son necesarias para compilar pero no
se empaquetaran ya que son proporcionadas por el contenedor
donde ser desplegada la aplicacin. Por ejemplo si se va a
desplegar en un servidor de aplicaciones se necesita una
dependencia con el Servlet API para compilar pero estar debe ser
proporcionada por el contenedor del servidor, as que se marcar
como provided.

10
runtime: estas dependencias no son empaquetadas pero son
necesarias para la compilacin y la fase de pruebas del proyecto.
test: estas dependencias son necesarias para la fase de test del
proyecto pero no sern empaquetadas.

Se recomienda organizar las dependencias para su mejor localizacin y


mantenimiento. Desde el rea de calidad del IAM se propone la siguiente
organizacin:

Inicialmente indicar las dependencias con los otros submdulos del


proyecto.
Organizarlas por mbitos (compile, provided, runtime y test en ese
orden).
Dentro de cada mbito organizarlas por funcionalidad (por ejemplo
todas las dependencias necesarias para hibrnate juntas, todas las
del log juntas, etc).

A continuacin se muestra un ejemplo de declaracin de


dependencia.

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.10</version>

<scope>test</scope>

</dependency>

Ilustracin 7. Ejemplo de declaracin de dependencia.

5.2 Build settings


Este apartado se modifica el comportamiento por defecto de maven.
Tpicamente en un proyecto IAM solo se usaran los siguientes apartados:

buildplugins: que contendr la configuracin de los plugins


necesaria para construir de forma correcta el proyecto.
reporting: Que contendr la configuracin necesaria para generar los
informes del proyecto.

5.3 General project information


En este apartado se puede describir el proyecto, los desarrolladores y
responsables del mismo, sus licencias etc.

11
5.4 Build enviroment
En este apartado se define lo necesario para la ejecucin de maven. Se
deben definir los repositorios corporativos del IAM, tanto los de artefactos como los
de plugin. A continuacin se muestra un ejemplo de su declaracin.

<repositories>

<repository>

<id>iamRepo</id>

<name>Repositorio-iam</name>

<url>URL REPOSITORIO ARTIFACTORY</url>

</repository>

</repositories>

<pluginRepositories>

<pluginRepository>

<id>iamRepo-plugin</id>

<name>Repositorio-iam-plugins</name>

<url> URL REPOSITORIO ARTIFACTORY PLUGGIN</url>

</pluginRepository>

</pluginRepositories>

Ilustracin 8. Ejemplo de declaracin de repositorios.

Adems se pueden crear distintos profiles. En el entorno IAM es


recomendable crear un profile distinto para local, desa, pre y pro. De esta forma se
pueden crear los artefactos de forma distinta dependiendo del entorno al que vaya
destinado. A continuacin se muestra un ejemplo de su declaracin.

12
<profiles>

<profile>

<id>local</id>

<properties>

<curso.entorno>local</curso.entorno>

</properties>

</profile>

<profile>

<id>desa</id>

<activation>

<activeByDefault>true</activeByDefault>

</activation>

<properties>

<curso.entorno>desa</curso.entorno>

</properties>

</profile>

<profile>

<id>pre</id>

<properties>

<curso.entorno>pre</curso.entorno>

</properties>

</profile>

<profile>

<id>pro</id>

<properties>

<curso.entorno>pro</curso.entorno>

</properties>

</profiles>

Ilustracin 9. Ejemplo de declaracin de profiles.

Para activar un profile se debe ejecutar el comando maven deseado con la


opcin -P<profile>. Por ejemplo para realizar la compilacin con el profile de pre se
debe ejecutar el siguiente comando.

13
mvn compile P pre

Ilustracin 10. Ejemplo de ejecucin de un profile.

Dentro del pom padre del proyecto se deben configurar en este apartado
una serie de propiedades para indicar a maven que use el encoding acordado por el
IAM, en este caso UTF-8. A continuacin mostramos un ejemplo de cmo se debe
declarar.

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

</properties>

Ilustracin 11. Ejemplo de configuracin de encoding.

14
6 Ciclos de vida de construccin
Un ciclo de vida de construccin es una secuencia ordenada de paso para
conseguir un objetivo.

Maven proporciona tres ciclos de vida: clean, build y site.

El ciclo de vida clean es el encargado de limpiar el directorio de


construccin, por defecto ${basedir}/target.
El ciclo de vida build es el encargado de realizar la construccin de un
proyecto.
El ciclo de vida site se encarga de generar la documentacin y los informes
del proyecto.

Un paso dentro de un ciclo de vida se denomina fase. Cuando se solicita la


ejecucin de una fase dentro de un ciclo de vida se ejecutan todas las fases
anteriores del ciclo de vida en orden hasta llegar a la fase indicada.

A continuacin vamos a tratar sobre las fases ms comunes dentro de cada


ciclo de vida.

6.1 Ciclo de vida clean.


Como ya indicamos este ciclo de vida es el encargado de borrar todos los
artefactos generados durante la construccin del proyecto. Este ciclo de vida es
muy importante ya que nos asegura que tras ejecutarse el proyecto vuelva a quedar
en un estado limpio.

La fase ms comn de este ciclo de vida es clean y para ejecutarla se debe


invocar el siguiente comando.

mvn clean

Ilustracin 12. Ejecucin de la fase clean.

1.38440 Ciclo de vida build.


Este ciclo de vida es el encargado de construir el proyecto. Consta de
numerosas fases por lo que solo vamos a describir las ms comunes.

La fase compile se encarga de compilar el cdigo fuente del proyecto. Para


ejecutarla se debe invocar el siguiente comando.

mvn compile

15
Ilustracin 13. Ejecucin de la fase compile.

La fase package es la encargada de empaquetar los distintos artefactos del


proyecto. Es decir, esta fase se encarga de construir los jar, war y ear. Para
ejecutarla se debe invocar el siguiente comando.

mvn package

Ilustracin 14. Ejecucin de la fase package.

La fase install se encarga de instalar los artefactos generados dentro del


repositorio local para poder ser usado como dependencia en otros proyectos
locales. Para ejecutarla se debe invocar el siguiente comando.

mvn install

Ilustracin 15. Ejecucin de la fase install.

La enumeracin anterior est ordenada desde las fases iniciales a las


finales. Recordemos que la ejecucin de una fase implica ejecutar todas las
anteriores, as por ejemplo al ejecutar la fase package se ejecutar a su vez la fase
compile pero no la install.

1.38441 Ciclo de vida site.


Este ciclo de vida es el encargado de generar la documentacin e informes
del proyecto. En el IAM este ciclo de vida generar como mnimo los javadoc, los
informes de checkstyle y de pmd.

La fase ms comn dentro de este ciclo de vida es site-deploy. Esta genera


los reports de todos los mdulos y adems realiza el despliegue de la
documentacin. El lugar de despliegue en el IAM suele ser un directorio con
nombre Documentacin dentro del proyecto.

Para ejecutar esta fase se debe invocar el siguiente comando:

mvn site-deploy

Ilustracin 16. Ejecucin de la fase site-deploy.

16
2 Plugin.
En este apartado se enumerarn los distintos plugin que han sido
configurados y probados para su correcto funcionamiento dentro del entorno IAM.

2.38440 Plugin de utilidades.


En este apartado describiremos los plugin que sirven para realizar tareas
que nos son propias de la construccin de un proyecto pero que gracias a maven
se pueden realizar de forma automtica.

maven-eclipse-plugin
Este plugin sirve para poder crear los archivos necesarios para abrir el
proyecto desde RSA. Su configuracin es la siguiente.

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-eclipse-plugin</artifactId>

<version>2.8</version>

<configuration>

<projectNameTemplate>${project.artifactId}</projectNameTemplate>

<buildOutputDirectory>salida</buildOutputDirectory>

<generatedResourceDirName>none</generatedResourceDirName>

</configuration>

</plugin>

Ilustracin 17. Configuracin de maven-eclipse-plugin

Para generar los archivos necesarios para RSA debe ejecutar el comando.

mvn eclipse:rad

Ilustracin 18. Creacin de archivos para RSA.

maven-clean-plugin
Aunque el maven-clean-plugin es una de los plugin por defecto de maven
(es el que usa durante el ciclo de vida clean) se puede declarar dentro del pom.xml
para modificar su configuracin. Por ejemplo se pueden aadir directorios que se

17
deseen borrar. A continuacin se muestra un ejemplo de cmo configurarlo para
borrar el directorio de Documentacin generado durante la fase site-deploy en el
IAM.

<plugin>

<artifactId>maven-clean-plugin</artifactId>

<version>2.5</version>

<configuration>

<filesets>

<fileset>

<directory>Documentacion</directory>

</fileset>

</filesets>

</configuration>

</plugin>

Ilustracin 19. Configuracin de maven-clean-plugin

2.38441 Plugin para la construccin


En este apartado describiremos los plugin que realizan su tarea durante la
construccin del proyecto, ya sea modificando el comportamiento por defecto de
maven o aadiendo nuevo funcionamiento.

maven-compiler-plugin
Este plugin se usa para indicar con que versin de java deben ser compilado
el proyecto. A continuacin mostramos la configuracin de este plugin.

18
<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<version>2.3.2</version>

<configuration>

<fork>true</fork>

<source>1.5</source>

<target>1.5</target>

</configuration>

</plugin>

Ilustracin 20. Configuracin de maven-compiler-plugin

maven- jar-plugin
Esta plugin es el encargado de configurar la forma en que maven generar
los jar. A continuacin de muestra un ejemplo de configuracin:

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-jar-plugin</artifactId>

<version>2.4</version>

<configuration>

<archive>

<addMavenDescriptor>false</addMavenDescriptor>

</archive>

</configuration>

</plugin>

Ilustracin 21. Configuracin de maven-jar-plugin

19
maven-assembly-plugin
Este plugin es el encargado de ensamblar los distintos elementos que sern
parte de la entrega. A continuacin de muestra un ejemplo de uso:

<plugin>

<artifactId>maven-assembly-plugin</artifactId>

<version>2.2.2</version>

<configuration>

<descriptors>

<descriptor>static.xml</descriptor>

</descriptors>

<finalName>PRUEBA</finalName>

<outputDirectory>${basedir}\..\..\despliegues\</outputDirectory>

<configuration>

<executions>

<execution>

<id>make-assembly</id>

<phase>package</phase>

<goals>

<goal>single</goal>

</goals>

</execution>

</executions>

</plugin>

Ilustracin 22. Configuracin de maven-assembly-plugin

maven-ear-plugin
Este plugin es el encargado de generar el archivo EAR. A continuacin de
muestra un ejemplo de uso:

20
<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-ear-plugin</artifactId>

<version>2.6</version>

<configuration>

<archive>

<addMavenDescriptor>false</addMavenDescriptor>

<manifest>

<addClasspath>true</addClasspath>

<addDefaultImplementationEntries>true</addDefaultImplementationEntries>

</manifest>

</archive>

<outputDirectory>${basedir}\..\..\despliegues</outputDirectory>

<finalName>PRUEBA</finalName>

<generatedDescriptorLocation>src/main/application/META-INF</generatedDescriptorLocation>

<modules>

<webModule>

<groupId>es.iam.calidad</groupId>

<artifactId>web-PRUEBA</artifactId>

<moduleId>PRUEBA</moduleId>

<bundleFileName>PRUEBA.war</bundleFileName>

<contextRoot>/PRUEBA</contextRoot>

</webModule>

</modules>

<version>1.4</version>

</configuration>

</plugin>

Ilustracin 23. Configuracin de maven-ear-plugin

21
2.38442 Plugin para informes.
En esta seccin vamos a enumerar los plugin necesarios para generar los
distintos informes solicitados por el rea de calidad del IAM.

maven-site-plugin
Este plugin es el encargado de configurar la fase de generacin de informes
de maven.

Un ejemplo de su configuracin es el siguiente:

<plugin>

<artifactId>maven-site-plugin</artifactId>

<version>3.0</version>

<configuration>

<reportPlugins>

[Lista de plugin para informes]

</reportPlugins>

</configuration>

</plugin>

Ilustracin 24. Configuracin de maven-site-plugin

22
maven-project-info-reports-plugin
Este plugin es el encargado de generar los informes. Un ejemplo de
configuracin es el siguiente:

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-project-info-reports-plugin</artifactId>

<version>2.2</version>

<reportSets>

<reportSet>

<reports>

<report>index</report>

</reports>

</reportSet>

</reportSets>

</plugin>

Ilustracin 25. Configuracin de maven-site-plugin

maven-pmd-plugin
Este plugin es el encargado de generar el informe de PMD. Un ejemplo de
configuracin es el siguiente:

23
<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-pmd-plugin</artifactId>

<version>2.5</version>

<configuration>

<linkXref>true</linkXref>

<minimumTokens>100</minimumTokens>

<targetJdk>1.6</targetJdk>

<rulesets>

<ruleset>../pmd-iam.xml</ruleset>

</rulesets>

</configuration>

</plugin>

Ilustracin 26. Configuracin de maven-pmd-plugin

maven-javadoc-plugin
Este plugin es el encargado de generar el informe de javadoc. Un ejemplo
de su configuracin es el siguiente.

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-javadoc-plugin</artifactId>

<version>2.7</version>

<configuration>

<detecJavaApiLink>false</detecJavaApiLink>

<detectLinks>false</detectLinks>

<linksource>false</linksource>

</configuration>

</plugin>

Ilustracin 27. Configuracin de maven-javadoc-plugin

24
2.38442.1.1 maven-checkstyle-plugin
Este plugin es el encargado de realizar el informe de checkstyle. Un ejemplo
de configuracin es el siguiente.

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-checkstyle-plugin</artifactId>

<version>2.6</version>

<configuration>

<configLocation>checkstyle-iam.xml</configLocation>

<failsOnError>false</failsOnError>

</configuration>

</plugin>

Ilustracin 28. Configuracin de maven-checkstyle-plugin

2.38442.1.2 maven-jxr-plugin
Este plugin se encarga de realizar las referencias entre los distintos mdulos
de un proyecto multi-modulo. Un ejemplo de configuracin es la siguiente.

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-jxr-plugin</artifactId>

<version>2.2</version>

</plugin>

Ilustracin 29. Configuracin de maven-jxr-plugin

25
3 Crear un proyecto desde un arquetipo
Un arquetipo de maven es una plantilla parametrizada que permite crear el
esqueleto de un proyecto de una forma rpida y sencilla.

Desde el rea de calidad del IAM se han creado una serie de arquetipos
para facilitar la creacin de la estructura estndar de un proyecto.

3.38440 Configuracin del settings.xml

Para poder acceder al repositorio de arquetipos del IAM se debe aadir


configuracin en el archivo settings.xml que se encuentra en la siguiente ruta.

<directorioInstalacionMaven>/conf/settings.xml

Ilustracin 30. Ubicacin archivo configuracin maven

Inicialmente se debe aadir un profile para conectarse correctamente con el


servidor. Para realizar esta tarea aada la siguiente informacin a su archivo de
configuracin.

26
<profiles>

<profile>

<id>repoIAM</id>

<activation>

<activeByDefault>true</activeByDefault>

</activation>

<repositories>

<repository>

<id>repoIAM</id>

<url>URL REPOSTORIO ARTIFACTORY</url>

</repository>

<repository>

<id>repoArquetipos</id>

<url> URL ARQUETIPOS IAM </url>

</repository>

</repositories>

<pluginRepositories>

<pluginRepository>

<id>repoPlugin</id>

<url> URL REPOSTORIO PLUGIN ARTIFACTORY </url>

</pluginRepository>

</pluginRepositories>

</profile>

</profiles>

<activeProfiles>

<activeProfile> repoIAM </activeProfile>

</activeProfiles>

</settings>

Ilustracin 31. Configuracin de repositorio IAM

Una vez realizada dicha configuracin debe ejecutar el siguiente comando.

27
mvn archetype:generate -DarchetypeCatalog=URL ARQUETIPOS IAM/archetype-catalog.xml

Ilustracin 32. Comando recuperacin arquetipos IAM maven.

La ejecucin de este comando mostrar los arquetipos disponibles en el IAM


de una forma similar a como muestra la Ilustracin 33. En esta pantalla se deber
elegir el arquetipo que se desea ejecutar.

Ilustracin 33. Listado de arquetipos del IAM

La creacin del esqueleto de la aplicacin se realizar en el directorio desde


el que se est ejecutando el comando.

28
4 Arquetipo web_was_6_1
Este arquetipo crea el esqueleto tpico de una aplicacin web para el IAM
para el servidor de aplicaciones WebSphere 6.1. Este arquetipo crea las
dependencias necesarias para que el proyecto use Spring MVC 3 e Hibernate 3.6

4.38440 Creacin del proyecto


Una vez seleccionado el arquetipo habr que configurarlo respondiendo a
una serie de preguntas. A continuacin vamos a detallar el significado de dichas
preguntas.

groupId: Este debe ser el grupo al que pertenece el proyecto. Por


ejemplo calidad
artifactId: Este ser el acrnimo del proyecto. Por ejemplo
PRUEBA
versin: La versin del proyecto. Por ejemplo 1.0.0- SNAPSHOT
package: El mimos que el groupId. Por ejemplo calidad

Tras completar la informacin se crear el proyecto y se mostrar una


pantalla parecida a la siguiente.

29
Ilustracin 34. Creacin del proyecto web_was_6_1

La estructura de directorios que se crea es la siguiente.

30
Ilustracin 35. Estructura de directorios del arquetipo web_was_6_1

31
Como se puede observar se ha creado una carpeta igual al nombre del
groupId indicado y los mdulos creados cumplen la normativa de nombrado. A su
vez se han creado todos los archivos pom y de configuracin necesarios. Tambin
se crea un archivo de propiedades por entorno vaco, estos archivos se puede
eliminar o sustituir por otros archivos de propiedades si se desea. Por ltimo se
puede observar que se crear un pgina web (prueba.html) dentro del mdulo WEB
que puede servir como plantilla para la pgina de test esttica.

32