Existen dos plugins para integrar Maven en Eclipse: m2eclipse y Q4E.

Hasta hace muy poco he venido usando Q4E. Me parecía que estaba mejor integrado con Eclipse, tenía visor de dependencias y había sido admitido oficialmente por la fundación Eclipse. Sin embargo, después de sufrir sus fallos durante algún tiempo y de constatar que no salían nuevas versiones me he decidido a darle otra oportunidad a m2eclipse.

En seguida me he dado cuenta de que m2eclipse no ha dejado de avanzar. Ya tiene las características que me gustaron de Q4E y muchas otras. Además, parece más estable y trabajado, lo cual no es extraño ya que lleva mucho mas tiempo en desarrollo (fue el primero). Para mi sorpresa, también m2eclipse está en la incubadora de la fundación Eclipse[1].

En las próximas líneas voy a tratar de explicar el procedimiento que he utilizado para instalar un entorno de desarrollo capaz de construir proyectos Maven en Eclipse, con m2eclipse, y desde la línea de comando.

Instalación de Maven

El primer paso es bajar y descomprimir el archivo de distribución de Maven. Como ya comenté en la entrada anterior en este momento se está reestructurando el esquema de versiones de Maven y resulta un poco complicado determinar cual es la versión más estable. Yo he elegido la versión 2.1.0-M1.

A continuación deberemos añadir M2_HOME a las variables de entorno de Windows. Suponiendo que se ha expandido el archivo en la unidad C: la variable M2_HOME será "C:\apache-maven-2.10-M1". También modificaremos la variable PATH añadiendo "C:\apache-maven-2.10-M1\bin" para poder llamar al ejecutable de Maven desde cualquier directorio.

Para probar que la instalación es correcta, desde una consola podemos ejecutar:

mvn -v

Si todo va bien, debería salir la versión de Maven, de Java, el "locale" y la versión del sistema operativo.

m2eclipse1Instalación de m2eclipse

Para instalar m2eclipse utilizaremos el menú "Help -> Software Updates". En la pestaña "Available Software", pulsamos el botón "Add site…" y en "Location" escribimos la dirección del sitio de descargas de m2eclipse (http://m2eclipse.sonatype.org/update/).

A continuación, desplegamos la entrada de m2eclipse y marcamos los siguientes elementos:

  • Maven Embedder
  • Maven Integration for Eclipse
  • Maven POM Editor
  • m2eclipse2Maven POM XML Editor
  • Maven: The definitive Guide book
  • MAven Central repository index
  • Maven SCM  Integration
  • Maven Integration for WTP

Si usas Subclipse marca también "Maven SCM handler for Subclipse". Al hacerlo se instalarán las extensiones que integran m2eclipse con Subclipse y tendrás la oportunidad de extraer un proyecto "Mavenizado" con "Check out as Maven project" cuando estás navegando por el contenido de un repositorio de Subversion[2].

Finalmente pulsa "Install", luego "Next", marca "Accept the terms…" y "Finish". 

Eclipse bajará los componentes seleccionados, los instalará y nos solicitará rearrancar.

Ajustes finales

Uno de los problemas que habitualmente se dan con Maven tiene su origen en el uso de librerías que solo vienen con el JDK como, por ejemplo, tools.jar. Esta librería se usa habitualmente y los POM suelen referenciarla del siguiente modo:

<dependency>
   <groupId>com.sun</groupId>
   <artifactId>tools</artifactId>
   <version>1.6.0</version>
   <scope>system</scope>
   <optional>true</optional>
   <systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>

Si usamos un JRE, la variable "java.home" contendrá algo así como "C:\Program Files\Java\jre1.6", por lo que buscará la librería en "C:\Program Files\Java\lib\tools.jar" sin éxito.

Para que funcione correctamente, deberemos disponer de un JDK y utilizar el JRE que trae en su interior en "C:\Program Files\Java\jdk1.6\jre".

Otro problema es que en ocasiones se utilizan ejecutables del JDK, como el "apt.exe", que tampoco vienen con el JRE.

Para solucionar todo ello deberemos lanzar Eclipse con el JRE contenido en el JDK. La forma más sencilla es editar el fichero "eclipse.ini" y añadir[3]:

-vm C:\Program Files\Java\jdk1.6\jre\bin

Otra forma de hacer los mismo es modificar el shortcut a Eclipse de Windows y añadir este mismo parámetro, y otra más seria crear un fichero "eclipse.bat" con:

start C:\eclipse\eclipse.exe -vm "C:\Program Files\Java\jdk1.6\jre\bin"

Para comprobar que Eclipse está utilizando este JRE se puede acudir al menú "Help->About Eclipse Platform" y pulsar el botón "Configuration Details" e inspeccionar la variable "java.home".

Cuando lanzamos Maven desde la línea de comandos, se utiliza la variable JAVA_HOME que deberá estar establecida con el valor "C:\Program Files\Java\jdk1.6".

Además de utilizar el JRE del JDK para lanzar Eclipse, será necesario utilizarlo también para compilar, así que deberemos añadirlo utilizando "Window->Preferences->Java->Installed JREs". En este caso se establecerá como "JRE home" la ruta  "C:\Program Files\Java\jdk1.6". Al hacerlo así, Eclipse busca y utiliza las librerías del JRE.

Por último, nos queda configurar m2eclipse. Para ello acudimos al menú "Window->Preferences" y accedemos a las preferencias de Maven. Aquí podemos ajustar varios aspectos de Maven, pero nos vamos a centrar en el apartado "Installations".

Se trata de especificar que versión de Maven vamos a usar desde m2eclipse. Por defecto viene seleccionada "Embbded", que es una versión incrustada de Maven que se instala con el propio plugin. Esta opción, aunque funcional, no es la mejor. Es aconsejable utilizar la misma versión de Maven en Eclipse y en línea de comando para que los resultados sean coherentes. Además si nos encontramos alguna incidencia, la solución a adoptar será la misma en ambos casos y nos ahorraremos quebraderos de cabeza.

Para ello deberemos utilizar el botón "Add" que nos permite añadir la instalación de Maven externa (la que creamos en el primer apartado). Antes de salir, comprobaremos que dicha instalación externa está marcada.

A partir de aquí…

Ya podemos utilizar Eclipse para crear proyectos nuevos, bajarlos del control de versiones, editarlos, compilarlos, probarlos y distribuirlos, todo ello de forma asistida gracias a Eclipse, m2eclipse y a sus wizards. Por debajo, Maven hará todo el trabajo duro interpretando los POMs, gestionando dependencias, etc.

Además, en cualquier momento, sin necesidad de ejecutar Eclipse, podremos compilar nuestros proyectos mediante la línea de comando, lo que nos permitirá automatizar el proceso de construcción de modo que otras personas o programas puedan utilizarlo fácilmente.

Lo que resta es conocer a fondo las posibilidades de Maven y de m2eclipse.

Para el primero existen dos excelentes libros gratuitos disponibles en Internet:

Además, en The Server Side se ha publicado recientemente un tutorial muy bueno sobre m2eclipse que es, precisamente, un resumen del capítulo dedicado a m2eclipse en el libro de SonaType.

  1. Es extraño que existan dos plugins aceptados por Eclipse para hacer lo mismo. No se si es bueno, teniendo en cuenta que se fomenta la competencia, o malo, porque se duplican esfuerzos
  2. Yo utilizo Subversive que será el tema de mis siguiente entrada
  3. Esta es la fórmula que a mi me ha dado resultado aunque en Internet he encontrado otras recetas que sugieren usar directamente el la ruta del JDK, es decir, "C:\Program Files\Java\jdk1.6\bin"
Tags: , , ,
7 Respuestas a “Preparando Eclipse para Maven con m2eclipse”
  1. [...] Preparando Eclipse para Maven con m2eclipse [...]

  2. Hola,

    una pregunta :) tengo instalado Maven en mi Eclipse, todo funciona bien, pero hay algo que he notado y no sé si tiene solucion.

    Los proyectos en Maven, cuando escribo el código, no me salen las líneas rojas de error de java ( por ejemplo, elimino la declaracion de una variable y donde la usaba se ponia rojo en modo aviso!), ahora solo veo los errores si compilo con maven.

    ¿Hay alguna manera de que el build java siga ejecutándose además del build de maven?

    Gracias de antemano

  3. En el menú “Project” de Eclipse deberías tener “Build Automatically” seleccionado. Así, debería marcarte los errores según vas tecleando.

  4. Pues es que lo tengo marcado pero no me aparecen los errores :S
    Lo que tengo activado es el build de maven junto con el de por defecto, entonces, cada vez que guardo el archivo, el maven compila automáticamente… pero sé que hay algo que falta porque java build debería serguir ejecutándose…

    Te indico algunos datos más por si em puedes ayduar.

    Mi comando mvn -v resulta esto:

    Apache Maven 2.1.0 (r755702; 2009-03-18 20:10:27+0100)
    Java version: 1.5.0_16
    Java home: C:\Archivos de programa\Java\jdk1.5.0_16\jre
    Default locale: es_ES, platform encoding: Cp1252
    OS name: “windows xp” version: “5.1″ arch: “x86″ Family: “windows”

    Está bien el path para el java.home, por lo que la configuracion del ini del eclipse no la he hecho.

    El java_home de la configuración de eclipse es:

    java.home=C:\Archivos de programa\Java\jdk1.5.0_16\jre

    En la configuración de ‘instalations’ de Maven en eclipse he añadido el que me he descargado en vez del embebed.

    Puede que el java_home del eclipse no sea el correcto??? y por eso no me hace el build bien???

    Muchas gracias :)

  5. Enhorabuena por tu blog. La verdad es que da gusto leer post tan bien documentados y redactados.

  6. Todo parece correcto y no creo que tengas un problema con el JAVA_HOME.

    La verdad es que no sé que puede ocurrir. ¿Funciona en los proyectos donde no usas Maven?.

    ¿Has probado a utilizar la opción Maven–>Update project configuration”?

  7. SirFireFénix dice:

    Excelente manual. Muy completo, muy sencillo y muy útil.

    Enhorabuena por él.

Deja una Respuesta