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
Una propiedad que he encontrado especialmente útil mientras haces testing en tu máquina es :
$ mvn XXXXXXXX -D surefire.useFile=false
De esa forma todas las trazas de testeo se muestran en consola, y no tienes que abrir el report generado en el target.
Ah, y felicidades por empezar a usar maven: después del doloroso comienzo (si tienes una aplicación seam formada por un montón de módulos y quieres configurar unit testing de EJB ;-)) las ventajas obtenidas son ENORMES.
Salu2
Ibon Urrutia
8 de agosto de 2009, 13:21Muy util el post voy a hacer referencia a el desde mi blog.
http://emanuelpeg.blogspot.com/2009/08/maven-para-desmemoriados.html
Muchas Gracias!!!
emanuelpeg
9 de agosto de 2009, 0:04El comienzo es duro sí. Aún es rara la semana que no tengo que aprender algo nuevo. Pero merece la pena. Cuesta aprender, pero luego se reutiliza en un instante.
En mi caso han sido 2 proyectos de servicios web con Axis2. Ya publicaré algo...
Me alegro que os haya parecido útil!
jcesarperez
9 de agosto de 2009, 19:34Hola Julio, pues me gusto el post, pero tengo una duda, si yo agrego o modifico una version de alguna dependencia dentro del pom.xml me toca modificar a mano el .classpath del Eclipse para tomar estos cambios? O como...
Gracias.
dracof.
Anónimo
26 de noviembre de 2009, 20:55Hola dracof.
Me alegra que te gustara. Lo que dices se puede hacer simplemente regenerando la configuración de eclipse o sólo actualizandola con >mvn eclipse:clean eclipse:eclipse
Otra opción es usar alguno de los plugins de Eclipse para Maven como m2eclipse o el hispanizado IAM que te hacen la vida un poco más fácil. Aunque yo recomiendo primero aprender bien Maven y luego usar uno de estos plugins.
jcesarperez
27 de noviembre de 2009, 8:12Hola Julio,
Lo primero felilcitarte por el blog me ha servido mucho de ayuda. Te comento: llevo un par de días leyendo sobre Maven pero no me entero muy bien y tengo algunas dudas.
¿Son SVN (Subversion) y Maven complementarios?
Yo utilizo SVN como repositorio de control de versiones, ¿podría Maven solucionarme los errores de dependencias de librerías cuando hago un checkout de un proyecto concreto?
Gracias de antemano.
amurguzur
16 de diciembre de 2009, 12:12