Anexo 15. Manual de Uso de Maven
Anexo 15. Manual de Uso de Maven
Anexo 15. Manual de Uso de Maven
Estndares
Manual de Uso de Maven
ndice
1
Introduccin...................................................................................5
Qu es Maven?............................................................................5
Conceptos bsicos........................................................................5
3.1
3.2
Transitividad de dependencias.....................................................5
Proyecto Maven.............................................................................8
El archivo pom...............................................................................9
5.1
Pom relationships..........................................................................9
5.2
Build settings................................................................................11
5.3
5.4
Build enviroment..........................................................................12
6.1
6.2
Plugin............................................................................................17
7.1
Plugin de utilidades......................................................................17
7.1.1
maven-eclipse-plugin_________________________________________
7.1.2
maven-clean-plugin___________________________________________
7.2
7.2.1
maven-compiler-plugin________________________________________
7.2.2
maven- jar-plugin____________________________________________
7.2.3
maven-assembly-plugin_______________________________________
7.2.4
maven-ear-plugin____________________________________________
7.3
7.3.1
maven-site-plugin____________________________________________
7.3.2
maven-project-info-reports-plugin________________________________
7.3.3
maven-pmd-plugin___________________________________________
7.3.4
maven-javadoc-plugin_________________________________________
Arquetipo web_was_6_1.............................................................29
9.1
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
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:
maven dependency:tree
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:
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:
A continuacin
dependencia.
se muestra un
ejemplo
de declaracin
de
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
11
<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>
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>
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>
14
1.38440
mvn compile
15
mvn install
1.38441
mvn 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>
Para generar los archivos necesarios para RSA debe ejecutar el comando.
mvn eclipse:rad
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
2.38441
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>
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>
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>
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>
21
2.38442
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>
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>
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>
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>
24
2.38442.1.1
maven-checkstyle-plugin
<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>
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>
25
<directorioInstalacionMaven>/conf/settings.xml
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>
27
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
29
30
31
32