Presentando Maven. Explicación básica.

4 diciembre 2008 at 8:52 pm 5 comentarios

Voy a presentar una herramienta libre muy utilizada en el mundo Java: Maven. Pretendo hacer una pequeña introducción para resaltar ideas.

Básicamente Maven es una herramienta de generación y gestión de proyectos Java. Uno de sus puntos fuertes es la gestión de dependencias, y es una de las cosas que hicieron que se adoptase en muchos proyectos en lugar de Ant.

338038_4786_1

Maven promueve una estructura de proyecto determinada, ya que se basa en el principio “convención sobre configuración”, es decir, que si hacemos las cosas de una forma determinada nos ahorramos configurar esas cosas. Sin duda seguir esa estructura nos facilitará las cosas.

A pesar de la creencia popular de que Maven es una especie de Ant, o un Ant ampliado, la verdad es que se parecen en poco. Ente esas similitudes destaca el detalle de que la descripción del proyecto está en un xml, que en Maven se llama pom.xml (frente al build.xml de Ant).

Otro concepto importante dentro de Maven es el de repositorios. Un repositorio es un almacén de paquetes (archivos jar habitualmente) ordenados de forma inequívoca incluyendo la versión. Maven se descarga a un repositorio local (bajo .m2 en el directorio del usuario) todas las dependencias y plugins que va necesitando. Esta descarga hace que las primeras ejecuciones puede ser bastante largas.

Pero para hacernos una primera idea de cómo funciona Maven, vamos a ver cómo sería un archivo pom.xml típico.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.tcymu.maven</groupId>
  <artifactId>test1</artifactId>
  <name>test1</name>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
      <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.15</version>
      </dependency>
  </dependencies>
</project>

Las partes importantes sería la definición de groupId que cumple una función similar a la de un paquete Java. artifactId sería el nombre de este artefacto (jar) en el repositorio. Como es de suponer version define la versión del artefacto. Y bajo dependencies aparecen las dependencias, que como se puede ver constan precisamente de un groupId, un artifactId y una version.

Con esto y si hemos seguido la estructura de paquetes que sugiere Maven, compilaríamos el proyecto (incluyendo la descarga de dependencias) con una simple línea:

mvn compile

Con compile le estamos indicando una fase. Algunas de las otras fases disponibles en Maven son: clean (limpia todo lo que ha generado), package (genera un jar), install (instala el jar en el repositorio local) o deploy (instala el jar en un repositorio remoto).

Hay que señalar que al ejecutar una fase se ejecutan todas las anteriores (para hacer un package primero hace un compile). Además ejecutar una fase significa realmente ejecutar una serie de tareas (goals) de una serie de plugins determinados.

¿Y qué es un plugin en Maven?. Pues prácticamente todo. Todas las tareas que ejecuta Maven son plugins. Así por ejemplo el compilar es llamar a la tarea compile del plugin compiler. Se puede llamar a una tarea de un plugin directamente mediante:

mvn compiler:compile (notación plugin:goal)

Existe una gran cantidad de plugins para Maven. Muchos de ellos con multitud de tareas.

Con esta introducción he intentado aclarar un poco los conceptos sobre Maven. Que realmente en un principio pueden ser algo confusos. Como en otras entradas utilizaré Maven, seguro que se irán aclarando más vuestras dudas.

Anuncios

Entry filed under: Java. Tags: , .

5 aplicaciones Windows que no te pueden faltar Añadir jars de un directorio al classpath

5 comentarios Add your own

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Mi perfil

View Miguel Orbegozo's profile on LinkedIn

Feedjit

Feeds

Otros…

BlogESfera Directorio de Blogs Hispanos - Agrega tu Blog

Bitacoras.com

Add to Technorati Favorites


A %d blogueros les gusta esto: