Maven en Eclipse


Es muy fácil trabajar con Maven en Eclipse. Si no sabes lo que es Maven, o te suenan extrañas las palabras "arqueotipo", "artefacto", "ciclo de vida por defecto", "fases Maven", etc, así como si quieres profundizar un poco más en Maven; te recomiendo que leas este primer artículo donde lo explicamos en detalle. Vamos a hacer lo mismo que hicimos con la consola de comandos, en ese otro artículo que te comenté antes, con Eclipse.

Una pregunta muy común es si para Maven ¿Es mejor Eclipse o Consola de comandos? La respuesta es lo que más te guste. Hay quien prefiere la consola, si has leído el artículo anterior habrás comprobado que es muy sencillo. Mis argumentos para usar el plugin de Maven en Eclipse son la comodidad, rapidez y optimización que aporta al desarrollo, además de la posibilidad de autocompletar y ayudas para Maven.

Para realizar este proyecto vamos a utilizar Eclipse con las herramientas ya integradas (como el plugin de Maven). Lo podemos descargar el eclipse que se llama “Eclipse IDE for Java EE Developers” desde https://www.eclipse.org/downloads/

1 Descargar Eclipse IDE for Java EE Developers - www.jarroba.com

Decir que este Eclipse lleva un Maven embebido, lo que quiere decir que no hace falta que hayamos descargado Maven de la página de Maven, como hicimos en el anterior artículo. Sí que recomiendo descargar Maven como hicimos antes, para disponer de la última versión de Maven, ya que la embebida en Eclipse suele ir alguna versión retrasada.

Creamos un nuevo proyecto Maven. Como se hace habitualmente en Eclipse, pulsamos con el botón derecho del ratón en el área en blanco llamada “Project Explorer”. Seleccionamos en el desplegable en “New” y luego en “Other…”.

2 crear un nuevo proyecto Maven con Eclipse - www.jarroba.com

En la ventana que se abre buscamos la carpeta “Maven”, seleccionamos el tipo de proyecto “Maven Project” y pulsamos “Next”

3 crear un nuevo proyecto Maven con Eclipse - www.jarroba.com

En la siguiente parte del asistente podemos seleccionar la casilla “Create a simple Project (skip archetype selection)”, así nos creará un proyecto simple automáticamente, sin tener que seleccionar un arqueotipo. Si dejamos sin seleccionar la casilla, nos aparecerá un buscador para elegir el arqueotipo.

Para este ejemplo vamos a descargar un arqueotipo simple (el mismo que descargamos con la consola de comandos). Para ello dejamos la casilla desmarcada y pulsamos “Next”.

4 arqueotipo Maven con Eclipse - www.jarroba.com

Podremos seleccionar un arqueotipo de los que ya están por defecto o desde alguna ubicación. Para este ejemplo seleccionaremos el que tiene de “Group Id” como “org.apache.maven.archetypes”, y de “Artifact Id” como “maven-archetype-quickstart”. Pulsamos “Next”.

5 arqueotipo Maven con Eclipse - www.jarroba.com

Ya solo nos queda configurar nuestro proyecto –al igual que hicimos antes en la consola- poner el “Group Id” (yo he puesto de ejemplo “com.jarroba.ejemplo”) y el “Artifact Id” (he puesto de ejemplo “nombreDeMiProyecto”). Pulsamos sobre “Finish”.

Puede suscitar la duda de: ¿Si el arqueotipo tiene un “Group Id” y un “Artifact Id”, ¿Por qué tengo que escribir otros nuevos? Los que sirvieron para filtrar son los datos que pusieron los creadores de ese arqueotipo cuando hicieron el proyecto nuevo; como nosotros vamos a crear un nuevo proyecto, lo tenemos que poner con nuestros datos personales, no con los de otra persona (si nuestro proyecto se convirtiera algún día en arqueotipo de otros desarrolladores, otros desarrolladores lo buscarían con nuestros datos, y los sustituirían con los suyos).

6 arqueotipo Maven con Eclipse - www.jarroba.com

Ya tendremos nuestro proyecto creado con los “Hello Word!”, igualito igualito a como hicimos en la consola 🙂

7 estructura de un arqueotipo Maven con Eclipse - www.jarroba.com

Programar con Maven en Eclipse

Primero vamos a ver una prueba de utilizar los comandos del ciclo de vida de un proyecto con Maven.

Pulsamos con el botón derecho sobre el proyecto para elegir “Run As”. En el desplegable podremos comprobar como hay ya varios comandos pre-configurados por el plugin de Maven en Eclipse; es decir, que pulsando un botón ejecutaremos estos comandos sin tener que escribir una palabra en la línea de comandos.

1 ejecutar un ciclo de vida de Maven en Eclipse - www.jarroba.com

Si por ejemplo pulsamos sobre “Maven test”, en la “Console” de Eclipse nos mostrará la siguiente salida de Maven.

2 salida Maven en la consola de Eclipse - www.jarroba.com

Te habrás fijado que nos aparece un Warning en el proyecto (triángulo amarillo con exclamación). Que si vamos a la pestaña inferior de Eclipse llamada “Markers” leeremos lo siguiente:

Java Build Path Problems

Build path specifies execution environment J2SE-1.5. There are no JREs installed in the workspace that are strictly compatible with this environment.

1 Error Maven en Eclipse Build path specifies execution environment... - www.jarroba.com

Nos está avisando que no encuentra el JRE de Java.

Para corregirlo vamos a añadir un plugin, para que Maven se encargue de gestionar por nosotros el JRE (podríamos hacerlo manual desde Eclipse, pero así ejemplifico como se usan los plugins, y es mucho más cómodo).

Para ello vayamos al bien amado POM. Al abrir el archivo en Eclipse tenemos que pulsar la pestaña “pom.xml”, el de resto de pestañas son asistentes para configurar el POM de una manera más sencilla, que aquí no entraremos pero échalas un vistazo que son útiles.

Y añadimos los tag de apertura y cierre para <build>. Dentro de estos añadimos el que se llama <pluginManagement> para que nos gestione los plugins. A su vez estará el de <plugins> en plural que contendrá <plugin>. Y utilizaremos el plugin llamado “maven-compiler-plugin”, al que le diremos que queremos tanto “source” como el “target” a la última versión del JRE que tengamos instalado (yo tengo instalado el “1.8”). Por lo que insertaremos el siguiente código dentro de las etiquetas <project>:

<build>

	<pluginManagement>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
		</plugins>
	</pluginManagement>

</build>

Quedará como la siguiente imagen. Y hay que guardar el fichero del “pom.xml”.

2 Error Maven en Eclipse Build path specifies execution environment... - www.jarroba.com

Veremos que no solo no nos ha corregido el problema sino que nos ha puesto otro ¡y de los rojos! No hay problema, simplemente que falta una cosa.

Maven Problems

Project configuration is not up-to-date with pom.xml Run Maven->Update Project or use Quick Fix.

3 Error Maven en Eclipse Build path specifies execution environment... - www.jarroba.com

Lo que falta es actualizar el proyecto. Todo lo que insertemos entre las llaves <build> requiere de un tratamiento especial de actualización, muy sencillo.

Para ello con el botón derecho sobre el proyecto, pulsamos en “Maven” y luego en “Update Project…”

4 Error Maven en Eclipse Build path specifies execution environment... - www.jarroba.com

La ventana que se nos abre, seleccionaremos nuestro proyecto y le diremos que actualice la configuración desde el “pom.xml” marcando “Update Project configuration from pom.xml”. Por defecto estará todo ya seleccionado y listo, por lo que no tendremos que seleccionar nada más (te marco en rojo en la imagen los check para que veas que esté todo correcto) y pulsamos “OK”.

5 Error Maven en Eclipse Build path specifies execution environment... - www.jarroba.com

Tarda unos segundos en procesar. Para comprobar que nos han desaparecido todos los problemas 😀

6 Error Maven en Eclipse Build path specifies execution environment... - www.jarroba.com

Ya tenemos el proyecto limpio de problemas. Solo queda programar.

Aprovecho y te explico que hemos hecho. Hemos utilizado la siguiente etiqueta <build>.

Configuración de construcción <build>: se ocupa de declarar la estructura del proyecto, gestionar plugins, y configura los informes. <build> hace otras muchas cosas, aquí vamos a explicar dos etiquetas que puede contener directamente <pluginManagement> o <plugins>.

<pluginManagement>: Es casi lo mismo que no poner esta etiqueta. La única diferencia es que en lugar de la configuración la información del plugin para esta construcción del proyecto en particular, se pretende configurar la construcción del proyecto que hereda de este al usar esta etiqueta de gestión de plugins. Solo configura los plugins que son referenciados dentro de elementos de los plugins de los hijos. Los hijos tienen todo el derecho de sobrescribir lo que se ha definido en el <pluginManagement> Contiene <plugins>

<plugins>: los plugins nos aportan funcionalidades extra. En el ejemplo del código, el plugin nos configura automáticamente el proyecto para que sea compatible con el JRE de Java para la versión “1.8”. <plugins> puede estar tanto dentro como fuera de <pluginManagement>, dependiendo de lo que necesitemos. Cada plugin se define en singular <plugin>.

<plugin>: Un plugin tiene algunos de los siguiente elementos:

  • <groupId>, <artifactId>, <version>: un plugin sigue siendo un proyecto Maven que ha hecho otro desarrollador o nosotros mismos.
  • <extensions>: si “true” carga las extensiones de este plugin, “false” en caso contrario. Por defecto está a “false”.
  • <inherited>: si “true” aplica la configuración del plugin a los POM que hereden de éste, “false” en caso contrario. Por defecto está a “false”.
  • <configuration>: cada plugin tendrá unas configuraciones específicas. En el código de ejemplo pide dos valores de entrada <source> y <target>, pero variarán en cada plugin. Se puede decir que son los “setter” o los parámetros de construcción del plugin; es decir, los parámetros que quiera el que desarrolló el plugin.
  • <dependencies>: puede tener también dependencias (bibliotecas) que sean necesarias para la ejecución del plugin.
  • <executions>: Un plugin podría tener múltiples objetivos (goals). Cada objetivo podría tener una configuración separada, posiblemente incluso unida a un objetivo del plugin a otra fase diferente. Configura la ejecución de los objetivos de un plugin.
  • <id>: Especifica el bloque de ejecución entre todos los demás.
  • <goals>: Contiene una lista de elementos de objetivos <goal>.
  • <phase>: Esta será la fase que la lista de objetivos ejecutará. Permite la unión de cualquier objetivo a una fase en el ciclo de vida de construcción, alterando al que está por defecto en Maven.

Un ejemplo rápido de programación con dependencias sería: Imaginemos que queremos utilizar objetos JSON serializados en objetos (un objeto simple POJO que se convierta en un JSON). Investigamos un poco y pensamos que una buena idea sería utilizar la biblioteca Gson que nos hace este trabajo. Gson es una biblioteca que ha desarrollado Google, por lo que tendríamos que ir a descargarla desde algún lado e importarla. Mucho más sencillo con Maven, vamos a la página de http://mvnrepository.com/ y buscamos la última versión de Gson .

1 ejemplo artefacto maven con dependencias en Eclipse - www.jarroba.com

Nos copiamos la dependencia de Maven al POM de nuestro proyecto dentro de <dependencies> (le podemos poner un <scope> si queremos):

2 ejemplo artefacto maven con dependencias en Eclipse - www.jarroba.com

Ahora guardamos el POM y construimos nuestro proyecto para que nos la traiga desde el repositorio http://mvnrepository.com/ a nuestro ordenador.

3 ejemplo artefacto maven con dependencias en Eclipse - www.jarroba.com

Cuando termine de trabajar Maven.

4 ejemplo artefacto maven con dependencias en Eclipse - www.jarroba.com

Ya podremos abrir nuestras clases Java y empezar a trabajar. Como en el siguiente ejemplo la biblioteca Gson:

5 ejemplo artefacto maven con dependencias en Eclipse - www.jarroba.com

Te he ayudado a pasar la puerta, el resto del programa ya es cosa tuya 😀

Comparte esta entrada en:
Safe Creative #1401310112503
Maven en Eclipse por "www.jarroba.com" esta bajo una licencia Creative Commons
Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
Creado a partir de la obra en www.jarroba.com

32 comentarios en “Maven en Eclipse”

  1. Hola, excelente artículo, seguí todos los pasos y pude crear el proyecto en línea de comandos, sin embargo desde Eclipse, a pesar de que agregue mi instalacion desde el menu de Window.

    Eclipse me muestra el error “Could not calculate build plan: Plugin org.apache.maven.plugins: maven-resources-plugin: 2.6 or one of its dependencies could not be resolvedÑ Failed to read artifact descriptor for org.apache.maven.plugins: maven-resources-plugin: 2.6”

    Puedes ayudarme?

    1. Asegurate que Eclipse esté apuntando correctamente al settings.xml del repositorio local (ve en Eclipse a “Window/Preferences”, en el cuadro que se abre ve a “Maven/User Settings”). En Windows se crea por defecto en “C:\Users\\.m2\settings.xml” (En el cuadro de opciones que hemos dicho tiene que estar apuntar en “User Settings”) y el repositorio local en “C:\Users\\.m2\repository” (tiene que apuntar en “Local Repository”)

  2. Hola la explicacion esta muy buena solo tengo una inquietud, a la hora de crear el proyecto no me sale  el web Pages como en la mayoria de proyectos maven.uch

    ¿Como puedo generar esta carpeta? Para poder agregar los archivos html.

    Muchas gracias

  3. Dioooos después de 4 horas buscando soluciones, Bendito seas,

    Era por el maven/updateProyect(alt+F5).

    Le ponia el plugin, y le daba a refresh, a build, a install a todo, le cambiaba el nombre, reiniciaba el eclipse, todo menos el update proyect.

    Thanks.

     

  4. Antes que nada, muchas gracias por toda la expliación bien detallada. Eres un genio.

    Mencionaste que cuando descarguemos el IDE, recomiendas descargar maven desde la página oficial, porque la versión del IDE normalmente viene con una versión retrasada.

    Pregunta:

    ¿Existe alguna configuración del IDE para que utilice la versión de descarga, en vez que la que tiene por defecto?, si es así ¿cómo o en dónde se configura?

    De antemano muchas gracias!

    1. Sí, existe la forma de decirle a Eclipse donde se encuentra nuestro Maven descargado (en algunos casos es necesario). Para ello:

      1. Vamos en la barra de tareas a Window/Preferences.
      2. En la ventana que se abre, en la columna de la izquierda vamos a Maven/Installations (Nota: cuando añadamos la instalacción de Maven, en esta ventana tendremos que seleccionar el check de la instalación de Maven que queramos utilizar)
      3. En la segunda ventana que se abre pulsamos en el botón “Add…”, y donde pone “Installation home:” pulsamos en “Directory…”, ahí buscamos nuestra instalación de Maven que queramo añadir.
      4. Aceptamos todo (nos eseguramos que esté marcado el check que mencionamos en la nota del paso 2).
  5. Hola tengo un detalle con maven resulta que cambie de maquina y ya termine de configurar, importe mi proyecto maven y resulta que no me actualiza ningun cambio ni modificacion que hago sobre el, bueno si lo ghace fisicamente pero al compilarlo pareciera que no llega a compilar las clases en mi nueva maquina y obvio al correrlo no se ven todos los cambios que realizo. Y si le aplico el clean no llego a ver que me cree la ultima carpeta de mi proyecto en el target y por lo tanto no encuentra no las classes para correr. A que se debera =(.

     

    salu2.

    1. Hola Faby. Si no has cambiado de repositorio, comprueba que se te esté generando bien la carpeta “.M2” en “C:\Users\\.m2″ (se te tienen que descargar las dependencias, sino dará errores por no encontrarlas). Prueba a hacer un “Update Project configuration from pom.xml” y un “Force Update of Snapshots/Releases”. Si sigue con errores tendrás que comprobar también los ficheros Pom y de configuración si tuvieran rutas absolutas que apuntaran a carpetas que existían en el antiguo ordenador y no en el nuevo.

  6. Hola,

    Tengo una duda, actualmente tenemos que migrar un proyecto Maven a HTML5 con Javascript pero al momento de importarlo en Eclipse me tira error, si veo las clases y demás, pero cuando lo ejecuto en local me da error 404, estamos utilizando Eclipse Mars y Tomcat v8.0

    ¿Lo estoy importando de manera incorrecta?

    Saludos.

  7. Hola Ramon:

    Tus blog son muy interesantes.

    Como trabajo con properties y donde debere alojarlos?

    Un saludo dede Bogota

     

  8. Hola benas,

    El artículo está genial explicado, pero me surge una duda con los plugins

    He buscado en el MVNRepository el plugin de EclipseLink para poder crear clases de tipo JPA.

    Añado al POM

      <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>org.eclipse.persistence.jpa</artifactId>
        <version>2.5.2</version>
    </dependency>

    La salida  Maven install -> Build Sucess. Pero al ir a crear clases de tipo JPA Entity o EclipseLink Dynamic Entity no me encuentra el proyecto y me dice que tengo que crear uno concreto.

    El caso es que me gustaría poder hacer uso de JPA en un proyecto creado con MAVEN y estoy seguro de que me dejo algo.

    Un saludo.

    1. No he trabajado con JPA, pero en vez de buscar versiones propias de Eclipse casi mejor buscar la biblioteca de JPA, o si lo que quieres es un plugin para Eclipse es buscar en la tienda JPA.

  9. Primero que nada, excelente artículo, justo lo encontré ahora que estoy trabajando en un proyecto de la universidad, quería preguntarte si de casualidad conoces una manera de instalar BouncyCastle para usarlo con Maven y como usarlo en una aplicacion? de antemano gracias por la respuesta 🙂

  10. Lo primero, gracias por el aporte. Uno más que sirve de gran ayuda.

    Lo segundo es, llevo un par de días buscando en Internet el problema que tengo pero no consigo resolverlo. Ahí va:

    Cuando termino con el asistente de creación del proyecto Maven en Eclipse Mars (en el que configuro igual que en este tutorial) me sale un error durante la construccion del espacio de trabajo, 

    'Building workspace' has encountered a problem

    Errors ocurred during the build

    Errors occurred during the build.
    Errors running builder 'Maven Project Builder' on project 'mavenWeb'.
    Could not calculate build plan: Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.6
    Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.6
    Could not calculate build plan: Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.6
    Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.6

    Me descargué el plugin m2e para eclipse desde  http://download.eclipse.org/technology/m2e/releases/  y mi version de Apache Tomcat es 7.0.63

    Espero que alguien pueda ayudarme, estoy algo perdido. Gracias

    1. En este artículo quise simplificar el proceso bastantes pasos. En caso de que te de problemas el Maven embebido en Eclipse, lo mejor es descargar Maven y vincularlo con Eclipse. Para ello:

      1-Descarga Maven de https://maven.apache.org/download.cgi y descomprímelo por ejemplo en "archivos de programa"

      2-Crea la variable de entorno de M2_HOME (apunta a la intalación de Maven), y en la variable de path añade la ruta hasta la carpeta "bin" de Maven incluida ésta (valdría con poner: %M2_HOME%\bin;). Ya con esto asegurate que esté bien puesto el JDK de Java en las variables de entorno, ya que es necesario (más información de la intalación de Maven en https://maven.apache.org/install.html)

      3-En Eclipse ve a Window/Preference y ahí ve a Maven/Installations, añade y busca el nuevo Maven que has instalado. Asegurate de seleccionarlo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies

ACEPTAR
Aviso de cookies