Maven

Maven
Maven logo.gif
Desarrollador
Apache Software Foundation
http://maven.apache.org
Información general
Última versión estable 3.0.3
3 de marzo de 2011
Género Desarrollo Java
Sistema operativo Multiplataforma
Licencia Licencia Apache 2.0
En español ?

Maven es una herramienta de software para la gestión y construcción de proyectos Java creada por Jason van Zyl, de Sonatype, en 2002. Es similar en funcionalidad a Apache Ant (y en menor medida a PEAR de PHP y CPAN de Perl), pero tiene un modelo de configuración de construcción más simple, basado en un formato XML. Estuvo integrado inicialmente dentro del proyecto Jakarta pero ahora ya es un proyecto de nivel superior de la Apache Software Foundation.

Maven utiliza un Project Object Model (POM) para describir el proyecto de software a construir, sus dependencias de otros módulos y componentes externos, y el orden de construcción de los elementos. Viene con objetivos predefinidos para realizar ciertas tareas claramente definidas, como la compilación del código y su empaquetado.

Una característica clave de Maven es que está listo para usar en red. El motor incluido en su núcleo puede dinámicamente descargar plugins de un repositorio, el mismo repositorio que provee acceso a muchas versiones de diferentes proyectos Open Source en Java, de Apache y otras organizaciones y desarrolladores. Este repositorio y su sucesor reorganizado, el repositorio Maven 2, pugnan por ser el mecanismo de facto de distribución de aplicaciones en Java, pero su adopción ha sido muy lenta. Maven provee soporte no sólo para obtener archivos de su repositorio, sino también para subir artefactos al repositorio al final de la construcción de la aplicación, dejándola al acceso de todos los usuarios. Una caché local de artefactos actúa como la primera fuente para sincronizar la salida de los proyectos a un sistema local.

Maven está construido usando una arquitectura basada en plugins que permite que utilice cualquier aplicación controlable a través de la entrada estándar. En teoría, esto podría permitir a cualquiera escribir plugins para su interfaz con herramientas como compiladores, herramientas de pruebas unitarias, etcétera, para cualquier otro lenguaje. En realidad, el soporte y uso de lenguajes distintos de Java es mínimo. Actualmente existe un plugin para .Net Framework y es mantenido,[1] y un plugin nativo para C/C++ fue alguna vez mantenido por Maven 1.[2]

Contenido

Teoría

Convención sobre configuración

La filosofía general de Maven es la estandarización de las construcciones generadas por seguir el principio de Convención sobre Configuración, a fin de utilizar existentes modelos en la producción de software. Esta estrategia necesariamente restringe ampliamente la variabilidad, lo que se refleja en la exhortación de Maven a adherirse a su modelo de proyecto.[3] Mientras que Maven es adecuado para nuevos proyectos, los proyectos complejos ya existentes pueden ser simplemente no adaptables para que utilicen Maven. La falta de restricciones de la convención de capas del proyecto fue hecha de alguna manera más configurable con el lanzamiento de Maven 2.

Reutilización

Maven está construido alrededor de la idea de reutilización, y más específicamente, a la reutilización de la lógica de construcción. Como los proyectos generalmente se construyen en patrones similares, una elección lógica podría ser reutilizar los procesos de construcción. La principal idea es no reutilizar el código o funcionalidad (como Apache Ant), sino simplemente cambiar la configuración o también código escrito. Esa es la principal diferencia entre Apache Ant y Apache Maven: el primero es una librería de utilidades y funciones buenas y útiles, mientras que la otra es un framework configurable y altamente extensible.[4]

Aunque Maven es configurable, históricamente el proyecto Maven ha enfatizado seriamente que los usuarios deben adherirse a su concepto de un modelo de proyecto estándar tanto como sea posible.

Ciclo de vida

Las partes del ciclo de vida principal del proyecto Maven son:

  1. compile
  2. test
  3. package
  4. install
  5. deploy

La idea es que, para cualquier meta, todas las metas anteriores han sido completadas satisfactoriamente. Por ejemplo, cuando se ejecuta mvn install Maven verificará si mvn package ha sido ejecutado exitosamente (el archivo jar existe en target/), en cuyo caso no será ejecutado otra vez.

También existen algunas metas que están fuera del ciclo de vida que pueden ser llamadas, pero Maven asume que estas metas no son parte del ciclo de vida por defecto (no tienen que ser siempre realizadas). Estas metas son:

  1. clean
  2. assembly:assembly
  3. site
  4. site-deploy
  5. etc.

Pero estas metas pueden ser añadidas al ciclo de vida a través del Project Object Model (POM).

El POM

Integración con IDE

Maven sustituye el entorno integrado de desarrollo (IDE por sus siglas en inglés), por tanto la integración con diferentes IDEs es muy importante. Existen plugins de Maven para crear archivos de configuración del IDE a partir de los POMs. Actualmente se soportan:

Assembly descriptor

Ejemplos

Los proyectos en Maven son creados con una línea de comandos del siguiente tipo:

 mvn archetype:create -DgroupId="com.some.company" -DartifactId="some-project" -Dversion="0.0.1"

Maven puede crear un descriptor de proyecto para Eclipse con el siguiente comando:

mvn eclipse:eclipse 

Maven 1 y Maven 2

En la versión 1, basándose en un fichero de configuración en XML (project.xml) y una serie de plugins, esta herramienta puede compilar el proyecto Java, ejecutar los tests unitarios, generar paquetes (jars, wars, ears o distribuciones en zip) y generar una serie de reports.

La versión 2 usa también un fichero de configuración en XML llamado pom.xml (Project Object Model). Su funcionalidad es parecida a Apache Ant, de manera que permite compilar, ejecutar tests o realizar distribuciones pero con la diferencia de que trata de forma automática las dependencias del proyecto que gestiona.

Plugins disponibles

Existen plugins oficiales creados por maven y hay también plugins de terceros, como los disponibles en freehep. Algunos de ellos son

  • Jar
  • War
  • Ear
  • JUnit
  • Distribution: permite meter en un fichero zip todos los archivos del proyecto
  • PDF: genera la documentación del proyecto en PDF
  • Checkstyle: control de convenciones de codificación Java
  • PMD: verificación de reglas de codificación
  • ...

Reports

  • Javadoc
  • Fuentes en formato web
  • Métrica (Informática)
  • Resultados de los tests (en JUnit)
  • Resultados del checkstyle
  • Resultados del PMD
  • Tareas pendientes
  • Cambios entre versiones
  • StatCVS: genera todo tipo de estadísticas a partir de la información extraída del CVS
  • ...

Para la mejor gestión de Maven se puede utilizar Mevenide, que tiene plugins para Eclipse, NetBeans y JBuilder.

Referencias

  1. NET Maven Plugin - .NET Maven Plugin
  2. Maven Native Plugin - Maven Native Plug-in
  3. Maven - History of Maven
  4. What is Maven at apache.org

Enlaces externos

Véase también

  • Apache Continuum, un servidor de integración continua que se integra con Maven
  • Apache Archiva, un administrador de repositorio desarrollado por varios desarrolladores del núcleo de Maven
  • Apache Ant
  • Nexus Maven Repository Manager

Wikimedia foundation. 2010.

Mira otros diccionarios:

  • MAVEN — Mars Atmosphere and Volatile EvolutioN (MAVEN) ist eine Raumsonde zur Erforschung der Atmosphäre des Planeten Mars im Rahmen des Mars Scout Programms der NASA. Inhaltsverzeichnis …   Deutsch Wikipedia

  • Maven — ist ein Wort der englischen Sprache mit hebräisch jiddischen Wurzeln und bezeichnet einen, meist selbsternannten Experten eines einzelnen Wissensbereiches, der versucht, sein Wissen an andere weiterzugeben. Als Teil des Produktnamens wird es… …   Deutsch Wikipedia

  • MAVEN — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Maven peut désigner : Apache Maven, un outil logiciel libre pour la gestion et l automatisation de production des projets logiciels Java MAVEN, une… …   Wikipédia en Français

  • maven — ma‧ven [ˈmeɪvn] noun [countable] someone who knows a lot about a particular subject; = EXPERT: • Stockmarket mavens say such a pattern usually signals more gains ahead. * * * maven UK US /ˈmeɪvən/ noun [C] US ► an expert on a subject: » …   Financial and business terms

  • maven — is an informal term (derived from Yiddish) that is familiar in North America in the sense of an expert or connoisseur; it is much less familiar in BrE but is making headway: • Hathaway plays Andy Sachs, a total novice who learns fast, changes… …   Modern English usage

  • Maven — una herramienta software para la gestión y comprensión de proyectos Java. Estaba integrado dentro del proyecto Jakarta pero ahora ya es un proyecto de nivel superior de la Apache Software Foundation. Basándose en un fichero de configuración en… …   Enciclopedia Universal

  • maven — 1965, from Yiddish meyvn, from Heb. mebhin, lit. one who understands. Plural is mayvinim …   Etymology dictionary

  • maven — ☆ maven or mavin [mā′vən ] n. [Yiddish < LHeb mēvin] Informal an expert or connoisseur, often specif. a self proclaimed one …   English World dictionary

  • MAVEN — This article is about a Mars orbiter. For other uses, see Maven (disambiguation). Mars Atmosphere and Volatile EvolutioN (MAVEN) Artist s Concept of MAVEN. Credit: NASA. Operator NASA Major contractors …   Wikipedia

  • Maven — For other uses, see Maven (disambiguation). A maven (also mavin) is a trusted expert in a particular field, who seeks to pass knowledge on to others. The word maven comes from Hebrew, via Yiddish, and means one who understands, based on an… …   Wikipedia


Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.