Personal Website

My Web: MindEchoes.com

Monday, July 13, 2009

Comenzando con Maven

Este la verdad es un post que debia hace ratooo...

Para los que conocen Maven ya sabran que es una herramienta que nos permite simplificar muchisimooooo muchas tareas de configuración y administración de un proyecto (principalmente para Java, pero puede ser utilizado en otros lenguajes), y para lo que no lo conocen... es momento de hacerlo!

Que es Maven??
A primera vista parece que Maven puede ser muchas cosas, pero en pocas palabras Maven es un intento de aplicar las pautas de un proyecto de construcción de infraestructura con el fin de promover la comprensión y la productividad al proporcionar un camino claro en la utilización de las mejores prácticas. Maven es esencialmente una herramienta para el manejo y comprensión de un proyecto y, como tal, proporciona una manera de ayudar con la gestión de:
  • Builds
  • Documentation
  • Reporting
  • Dependencies
  • SCMs
  • Releases
  • Distribution
Los beneficios que se obtienen al utilizar Maven son faciles de apreciar al quitarnos esta herramienta la complejidad de configuración en los proyectos y brindarnos estructuras de proyectos bien definidas y standards con lo que podemos decir:
"Al comprender un proyecto Maven, comprendemos cualquier proyecto Maven"
Esto que puede sonar trivial, en realidad no lo es, cuantas veces ha pasado de descargar un proyecto realizado con un editor como Eclipse, y que la estructura que maneja ese proyecto sea incompatible con la de otro editor como Netbeans, o dejando los editores de lado, simplemente bajar un proyecto y obtener complicaciones innecesarias al buscar los archivos de configuración de la aplicación, etc. Estas cosas y muchas otras mas, son las que Maven soluciona con su modelo de proyecto.

En sintesis, para que puedo usar Maven:
  • Maven puede ser usado como una herramienta de Build (asi como Ant, tambien de Apache), con la diferencia de que Maven nos presenta un ciclo de build bien definido y basado en la experiencia de la utilización de estos ciclos en otros proyectos, por lo que nos evitamos tener que definir este proceso para compilar nuestra aplicación nosotros mismos o dejarle esa tarea a un IDE, y sabemos que siempre se va a ejecutar basada en un mismo principio.
  • Maven puede ser utilizado como un gestor de dependencias de nuestro Proyecto (Explicado en un proximo post). En Maven utilizar una libreria externa en nuestro proyecto es tan facil como agregar 3 lineas en un XML y esa libreria se encuentra disponible en todos nuestros proyectos sin tener que andar copiandola en cada carpeta de cada proyecto (en algunos casos de no poseer esas librerias Maven se encarga de descargarlas de internet para nosotros).
  • Maven nos brinda mayor comprensión de nuestros Proyectos. Maven tiene como uno de sus principios: "Convención sobre Configuración", esto hace referencia a que para la gran mayoria de los proyectos las propiedades de estos y las cosas que solemos configurarles tienden a ser las mismas, entonces por que no dejar esas configuraciones por defecto y hacerle perder menos tiempo al desarrollador, dejandole la posibilidad de que solo invierta tiempo en configuración para casos atipicos.
  • Maven nos permite referirnos a nuestros proyectos de forma Descriptiva, simplemente nos dedicamos a decir de que se trata, que cosas utiliza, etc. Y Maven "automagicamente" sabe como operar con estas caracteristicas y permite ir auto-documentando nuestro proyecto (Las caracteristicas muy interesantes que posee Maven sobre documentacion tambien se veran en un proximo post)
Maven puede ser utilizado para estas cosas y muchas mas... Maven si lo analizamos a fondo en cuanto a sus funcionalidades, veremos que es la aplicación en conjunto de muchos de los proyectos de Apache, donde para algun proyecto se necesitaba utilizar 5, 10, o la cantidad que fuera de herramientas de Apache (como Ant, Ivy, etc) ahora podemos simplemente utilizar Maven y tendremos todas esas funcionalidades.

Para descargar Maven se puede hacer del siguiente link.
En Linux puede ser instalado directamente desde el Gestor de Paquetes (Recomendado).
Para instalarlo es necesario tener instalado Java.

Para la instalación manual es necesario realizar los siguientes pasos.

No comments: