RSS

Introducción a Maven.

23 abr

En otras entradas de este blog (Ejemplo básico con Hibernate ó Primeros pasos con Spring Android) hemos utilizado Maven en nuestros proyectos. Para conocer un poco mejor está herramienta voy a escribir una breve introducción sobre Maven.

¿Qué es Maven?.

La definición, en inglés, que da la página oficial del proyecto Apache Maven es la siguiente:

Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.

Podríamos decir que Maven es una herramienta que sirve para gestionar nuestro proyecto software en distintas fases de éste. Maven nos permite desde compilar un proyecto hasta generar una serie de informes sobre él.

Los objetivos de Maven son los siguientes:

  • Hacer el proceso de construcción de un proyecto software sencillo.
  • Dar un sistema uniforme para construir proyectos software.
  • Facilitar la información sobre el proyecto.
  • Dar guías de estilo en la construcción de un proyecto.
  • Facilitar la integración y la migración de los proyectos.

Principales características de Maven.

  • Convención sobre configuración.
    Maven
    funciona sobre el paradigma de programación de convención sobre configuración. Esto quiere decir que Maven se encarga de tomar por defecto una serie de decisiones a priori (estructura de mi proyecto, path donde se van a encontrar mis fuentes o mis ficheros de recurso, compilador que voy a ejecutar, …) en el desarrollo de un proyecto software. El desarrollador no se tendrá que preocupar por esta serie de decisiones y sólo deberá centrarse en programar la lógica de la aplicación.
    Maven siempre recomienda que se siga la convención en sus proyectos. Las principales razones son que ésta facilita el desarrollo software y hace más fácil a otros desarrolladores incorporarse a los proyectos. En cualquier caso Maven siempre permite a los desarrolladores adaptar el proyecto Maven a sus necesidades, ‘saltándose’ la convención por defecto si es necesario.
  • Reusabilidad de un proyecto Maven.
    Maven como herramienta no sabe hacer mucho. Según se indica en la página web de Maven simplemente sabe leer ficheros xml e interpretarlos. El conocimiento de Maven radica en sus plugins. Estos plugins son los que saben hacer las cosas (tiene la lógica). Por ejemplo, los plugins se encargar de compilar, generar los jar, ejecutar tests o generar reportes. Maven, a su vez, facilita un repositorio central desde donde podemos bajar los distintos proyectos, bibliotecas o plugins que necesitemos para construir nuestro proyecto. Es ahí donde está el secreto de la reusabilidad de Maven. Cualquier proyecto que se quiera construir apoyándose en Maven sólo necesita incluir este repositorio central y coger de él lo que necesite.
  • Modelo de un proyecto Maven.
    Los proyectos Maven vendrán definido por un fichero xml denominado pom.xml. Este fichero será el encargado de definir  las características del proyecto como son:
    • Gestión de dependencias. Gracias a Maven podemos gestionar de manera muy sencilla las distintas dependencias de nuestro proyecto. Es tan fácil como agregar al fichero pom.xml una entrada diciendo que, por ejemplo, queremos agregar las librerías de JUnit a nuestro proyecto:
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.8.2</version>
      </dependency>
      
    • Repositorios remotos.
      Como ya hemos mencionado Maven tiene un repositorio central del cual podemos coger las dependencias que necesitamos en nuestro proyecto. Maven se encargará de traer a nuestro entorno local (al cual llamaremos repositorio local) estas dependencias y agregarlas como dependencias Maven de nuestro proyecto. No sólamente existe el repositorio central de Maven, se pueden incluir otros repositorios de donde recoger las dependencias (por ejemplo el de JBoss). Igualmente podemos adaptar Maven para crear un repositorio propio dentro de nuestra organización.
    • Reutilización de la lógica de negocio.
      Alrededor de Maven hay desarrollados un número de plugins que se pueden agregar a nuestro proyecto. Esto permite que, por ejemplo, podamos agregar un plugin para Maven de Jetty y podamos correr nuestra aplicación en un servidor Jetty con un simple comando.  Más sencillo que ésto, podemos compilar, probar, empaquetar, desplegar y distribuir nuestro proyecto con una línea por consola de comandos.
    • Ciclo de vida de un proyecto Maven.
      El ciclo de vida de Maven son las diferentes fases por las que atraviesa nuestro proyecto. Maven permite agregar nuevas fases a las ya predefinidas. Las fases predefinidas son las siguientes:
      • Compile: compila las fuentes de nuestro proyecto.
      • Test: ejecuta los test desarrollados para el proyecto.
      • Package: empaquetará nuestro proyecto con el formato que queramos (jar, war, ear, …).
      • Install: instalará nuestro proyecto en el repositorio local de Maven.
      • Deploy: despliega la aplicación.

Diccionario Maven.

A continuación voy a nombrar algunos de los términos con los que conviene familiarizarse cuando hablamos de Maven.

  • pom : un pom (project object model) es la unidad de trabajo básica de Maven. Se trata de un fichero XML que contiene información y detalles de configuración usados por Maven para construir nuestro proyecto.
  • arquetipo: un modelo ó tipo original que sirve como patrón para otras cosas. Por ejemplo, podemos tener un arquetipo que sirva como referencia para construir aplicaciones web.
  • plugin: es un componente software que agrega funcionalidad. En el caso de Maven cada plugin agrega nueva lógica al sistema. Los plugins tienen varios goals.
  • goal: una tarea específica que se ejecutará de manera autónoma ó junto a otros goals.
  • repositorio: es una colección de artefactos de proyectos almacenados en una estructura y formato que pueden ser fácilmente entendidos por Maven.
  • ciclo de vida: es una secuencia organizada de fases que se encargarán de ejecutar unos determinadas tareas (goals).
    
    

Share this:     

About these ads
 
4 comentarios

Publicado por en 23 abril, 2011 en Maven

 

Etiquetas:

4 Respuestas a “Introducción a Maven.

Deja un comentario

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

 
Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 69 seguidores

A %d blogueros les gusta esto: