Blog de Julio César Pérez Arques
Chuleta Maven
Agosto 5th, 2009 - [Enlace local]
UPDATE 20100126: Añadido cómo configurar el máximo de memoria heap
A continuación una chuleta con buena parte de lo que llevo aprendido usando Maven estos dos últimos meses más algunas referencias.
> 1. CREAR PROYECTOS
Crear un proyecto jar
$ mvn archetype:create -DgroupId=com.example -DartifactId=example-jar-project
Crear un proyecto war
$ mvn archetype:create -DarchetypeartifactId=maven-archetype-webapp -DgroupId=com.example -DartifactId=example-war-project
> 2. ECLIPSE
Configurar plugin eclipse para descargar fuentes y javadocs de las dependencias
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<!-- Ojo, la versión 2.6 tiene bugs con AJDT -->
<version>2.5</version>
<configuration>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>
Crear variable M2_REPO
Ir a Window -> Preferences -> Java -> Build path -> Classpath variable -> New
Name: M2_REPO
Path: /ruta/a/tu/.m2/repository
Generar ficheros de configuración de un proyecto jar Eclipse
$ mvn eclipse:eclipse
Generar ficheros de configuración de un proyecto war Eclipse
$ mvn eclipse:eclipse -Dwtpversion=1.5
Cargar un proyecto en Eclipse
Ir a File -> Import -> General -> Existing project into Workspace -> Select root directory
Borrar ficheros de configuración proyecto Eclipse
$ mvn eclipse:clean
Ahora más que nunca, se recomienda no subir a CVS o similar los ficheros de configuración del proyecto en el IDE.
> 3. CONFIGURACIÓN DE PLUGINS MÁS COMUNES
Configurar un plugin para este pom y sus hijos
En build -> pluginManagement -> plugins
Configurar un plugin sólo para este pom
En build -> plugins
Configurar encoding y versión java de compilación
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.4</source>
<target>1.4</target>
</configuration>
</plugin>
Configurar plugin surefire para ignorar fallos de tests, definir patrones de nombres de tests aceptados y configurar propiedades de sistema (locale) durante la ejecución de los tests
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.3</version>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<includes>
<include>**/*Test.java</include>
<include>**/*Tests.java</include>
</includes>
<systemProperties>
<property>
<name>user.language</name>
<value>es</value>
</property>
<property>
<name>user.country</name>
<value>ES</value>
</property>
</systemProperties>
</configuration>
</plugin>
> 4. COMANDOS ÚTILES EN EL DÍA A DÍA
Borrar carpeta de construcción
$ mvn clean
Ejecutar tests
$ mvn test
Construir proyecto
$ mvn package
Instalar proyecto en tu repositorio local
$ mvn install
Instalar (desplegar) proyecto en el repositorio de la organización (necesita configuración)
$ mvn deploy
Ejecutar Maven saltándose los tests (unitarios e integración)
$ mvn xxxxxxx -Dmaven.test.skip=true
Mostrar el stacktrace de excepción
$ mvn xxxxxxx -e
Mostrar información de debug
$ mvn xxxxxxx -X
Instalar una libreria de terceros en tu repositorio local
mvn install:install-file -Dfile=ruta/a/fichero/jar -DgroupId=com.example -DartifactId=nombre_libreria -Dversion=x.y.z -Dpackaging=jar
Instalar (desplegar) una libreria de terceros en el repositorio de la organización (necesita configuración)
$ mvn deploy:deploy-file -Dfile=ruta/a/fichero/jar -DrepositoryId=id_repositorio -Durl=url_repositorio -DgroupId=com.example -DartifactId=nombre_libreria -Dversion=x.y.z -Dpackaging=jar
Ver pom efectivo (suma de poms padres)
$ mvn help:effective-pom
Ejecutar Maven en modo offline
$ mvn xxxxxxx -o
Preparar Maven para poder ejecutarse en modo offline
$ mvn dependency:go-offline
Ejecutar Maven con máximo de memoria heap configurable (ejemplo con 512m)
$ mvn xxxxxxx -DXmx512m
o editar la variable de sistema MAVEN_OPTS=-Xmx512m
> 5. DEPENDENCIAS
Ver jerarquía de dependencias
$ mvn dependency:tree
Ver dependencias en orden alfabético
$ mvn dependency:resolve
Analizar uso de dependencias
$ mvn dependency:analyze
> 6. RECURSOS
Ciclos de vida
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
Estructura estándar de carpetas
http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
Propiedades
http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide
Pom
http://maven.apache.org/ref/2.2.1/maven-model/maven.html
Plugins más comunes
http://maven.apache.org/plugins/index.html
Documentación oficial
http://maven.apache.org/guides/index.html
Libro gratuito: Maven La Guía Definitiva
http://www.sonatype.com/books/maven-book/reference/
Gestor de repositorios Nexus
http://nexus.sonatype.org/index.html