fbpx
Wikipedia

Maven

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
Información general
Tipo de programa Desarrollo Java
Autor Jason van Zyl
Desarrollador Apache Software Foundation
Lanzamiento inicial 30 de marzo de 2002
Licencia Licencia Apache 2.0
Información técnica
Programado en Java
Plataformas admitidas máquina virtual Java
Versiones
Última versión estable 3.8.1 (info) 04 de abril de 2021 (4 meses y 8 días)
Archivos legibles
Maven metadata
Archivos editables
Maven metadata
Asistencia técnica
Enlaces
Sitio web oficial
Repositorio de código
Seguimiento de errores

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 solo 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]

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 modelos existentes 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: Genera los ficheros .class compilando los fuentes .java
  2. test: Ejecuta los test automáticos de JUnit existentes, abortando el proceso si alguno de ellos falla.
  3. package: Genera el fichero .jar con los .class compilados
  4. install: Copia el fichero .jar a un directorio de nuestro ordenador donde maven deja todos los .jar. De esta forma esos .jar pueden utilizarse en otros proyectos maven en el mismo ordenador.
  5. deploy: Copia el fichero .jar a un servidor remoto, poniéndolo disponible para cualquier proyecto maven con acceso a ese servidor remoto.

Cuando se ejecuta cualquiera de los comandos maven, por ejemplo, si ejecutamos mvn install, maven irá verificando todas las fases del ciclo de vida desde la primera hasta la del comando, ejecutando solo aquellas que no se hayan ejecutado previamente.

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: Elimina todos los .class y .jar generados. Después de este comando se puede comenzar un compilado desde cero.
  2. assembly: Genera un fichero .zip con todo lo necesario para instalar nuestro programa java. Se debe configurar previamente en un fichero xml qué se debe incluir en ese zip.
  3. site: Genera un sitio web con la información de nuestro proyecto. Dicha información debe escribirse en el fichero pom.xml y ficheros .apt separados.
  4. site-deploy: Sube el sitio web al servidor que hayamos configurado.
  5. etc.

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

El POM

  • Introduction
  • Simple examples and Super POM
  • Schema
  • POM Reference

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

  • Assembly descriptor

Ejemplos

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

mvn archetype:generate -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 extensiones (plugins), esta herramienta puede compilar el proyecto Java, ejecutar las pruebas unitarias, generar paquetes (jars, wars, ears o distribuciones en zip) y generar una serie de informes.

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 pruebas 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 , que tiene plugins para Eclipse, NetBeans y JBuilder.

Referencias

  1. NET Maven Plugin - .NET Maven Plugin
  2. Maven - History of Maven
  3. What is Maven at apache.org

Enlaces externos

  • Página principal de Maven 3
  • Página principal de Maven 2
  • Primeros pasos con Maven
  • Wiki sobre Maven
  • Plugins para Maven 2
  • Maven 2 codehaus tutorial el 23 de junio de 2007 en Wayback Machine.
  • Algunos libros gratuitos de Maven 2
  • , y
  • (using Lucene engine)
  • Maven for PHP

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
  •   Datos: Q139941

maven, herramienta, software, para, gestión, construcción, proyectos, java, creada, jason, sonatype, 2002, similar, funcionalidad, apache, menor, medida, pear, cpan, perl, pero, tiene, modelo, configuración, construcción, más, simple, basado, formato, estuvo, . Maven es una herramienta de software para la gestion y construccion 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 configuracion de construccion mas 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 MavenInformacion generalTipo de programaDesarrollo JavaAutorJason van ZylDesarrolladorApache Software FoundationLanzamiento inicial30 de marzo de 2002LicenciaLicencia Apache 2 0Informacion tecnicaProgramado enJavaPlataformas admitidasmaquina virtual JavaVersionesUltima version estable3 8 1 info 04 de abril de 2021 4 meses y 8 dias Archivos legiblesMaven metadataArchivos editablesMaven metadataAsistencia tecnicaEnlacesSitio web oficial Repositorio de codigo Seguimiento de errores editar datos en Wikidata Maven utiliza un Project Object Model POM para describir el proyecto de software a construir sus dependencias de otros modulos y componentes externos y el orden de construccion de los elementos Viene con objetivos predefinidos para realizar ciertas tareas claramente definidas como la compilacion del codigo y su empaquetado Una caracteristica clave de Maven es que esta listo para usar en red El motor incluido en su nucleo puede dinamicamente 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 distribucion de aplicaciones en Java pero su adopcion ha sido muy lenta Maven provee soporte no solo para obtener archivos de su repositorio sino tambien para subir artefactos al repositorio al final de la construccion de la aplicacion dejandola al acceso de todos los usuarios Una cache local de artefactos actua como la primera fuente para sincronizar la salida de los proyectos a un sistema local Maven esta construido usando una arquitectura basada en plugins que permite que utilice cualquier aplicacion controlable a traves de la entrada estandar En teoria esto podria permitir a cualquiera escribir plugins para su interfaz con herramientas como compiladores herramientas de pruebas unitarias etcetera para cualquier otro lenguaje En realidad el soporte y uso de lenguajes distintos de Java es minimo 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 Indice 1 Teoria 1 1 Convencion sobre configuracion 1 2 Reutilizacion 1 3 Ciclo de vida 1 4 El POM 1 5 Integracion con IDE 1 6 Assembly descriptor 2 Ejemplos 3 Maven 1 y Maven 2 4 Plugins disponibles 5 Reports 6 Referencias 7 Enlaces externos 8 Vease tambienTeoria EditarConvencion sobre configuracion Editar La filosofia general de Maven es la estandarizacion de las construcciones generadas por seguir el principio de Convencion sobre Configuracion a fin de utilizar modelos existentes en la produccion de software Esta estrategia necesariamente restringe ampliamente la variabilidad lo que se refleja en la exhortacion 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 convencion de capas del proyecto fue hecha de alguna manera mas configurable con el lanzamiento de Maven 2 Reutilizacion Editar Maven esta construido alrededor de la idea de reutilizacion y mas especificamente a la reutilizacion de la logica de construccion Como los proyectos generalmente se construyen en patrones similares una eleccion logica podria ser reutilizar los procesos de construccion La principal idea es no reutilizar el codigo o funcionalidad como Apache Ant sino simplemente cambiar la configuracion o tambien codigo escrito Esa es la principal diferencia entre Apache Ant y Apache Maven el primero es una libreria de utilidades y funciones buenas y utiles mientras que la otra es un framework configurable y altamente extensible 4 Aunque Maven es configurable historicamente el proyecto Maven ha enfatizado seriamente que los usuarios deben adherirse a su concepto de un modelo de proyecto estandar tanto como sea posible Ciclo de vida Editar Las partes del ciclo de vida principal del proyecto Maven son compile Genera los ficheros class compilando los fuentes java test Ejecuta los test automaticos de JUnit existentes abortando el proceso si alguno de ellos falla package Genera el fichero jar con los class compilados install Copia el fichero jar a un directorio de nuestro ordenador donde maven deja todos los jar De esta forma esos jar pueden utilizarse en otros proyectos maven en el mismo ordenador deploy Copia el fichero jar a un servidor remoto poniendolo disponible para cualquier proyecto maven con acceso a ese servidor remoto Cuando se ejecuta cualquiera de los comandos maven por ejemplo si ejecutamos mvn install maven ira verificando todas las fases del ciclo de vida desde la primera hasta la del comando ejecutando solo aquellas que no se hayan ejecutado previamente Tambien existen algunas metas que estan 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 clean Elimina todos los class y jar generados Despues de este comando se puede comenzar un compilado desde cero assembly Genera un fichero zip con todo lo necesario para instalar nuestro programa java Se debe configurar previamente en un fichero xml que se debe incluir en ese zip site Genera un sitio web con la informacion de nuestro proyecto Dicha informacion debe escribirse en el fichero pom xml y ficheros apt separados site deploy Sube el sitio web al servidor que hayamos configurado etc Pero estas metas pueden ser anadidas al ciclo de vida a traves del Project Object Model POM El POM Editar Introduction Simple examples and Super POM Schema Schema explanation POM ReferenceIntegracion con IDE Editar Maven sustituye el entorno integrado de desarrollo IDE por sus siglas en ingles por tanto la integracion con diferentes IDEs es muy importante Existen plugins de Maven para crear archivos de configuracion del IDE a partir de los POMs Actualmente se soportan Eclipse Netbeans IntelliJ IDEA JDeveloper 11G 11 1 1 3 Assembly descriptor Editar Assembly descriptorEjemplos EditarLos proyectos en Maven son creados con una linea de comandos del siguiente tipo mvn archetype generate 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 eclipseMaven 1 y Maven 2 EditarEn la version 1 basandose en un fichero de configuracion en XML project xml y una serie de extensiones plugins esta herramienta puede compilar el proyecto Java ejecutar las pruebas unitarias generar paquetes jars wars ears o distribuciones en zip y generar una serie de informes La version 2 usa tambien un fichero de configuracion en XML llamado pom xml Project Object Model Su funcionalidad es parecida a Apache Ant de manera que permite compilar ejecutar pruebas o realizar distribuciones pero con la diferencia de que trata de forma automatica las dependencias del proyecto que gestiona Plugins disponibles EditarExisten plugins oficiales creados por maven y hay tambien 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 documentacion del proyecto en PDF Checkstyle control de convenciones de codificacion Java PMD verificacion de reglas de codificacion Reports EditarJavadoc Fuentes en formato web Metrica Informatica Resultados de los tests en JUnit Resultados del checkstyle Resultados del PMD Tareas pendientes Cambios entre versiones StatCVS genera todo tipo de estadisticas a partir de la informacion extraida del CVS Para la mejor gestion de Maven se puede utilizar Mevenide que tiene plugins para Eclipse NetBeans y JBuilder Referencias Editar NET Maven Plugin NET Maven Plugin Maven Native Plugin Maven Native Plug in Maven History of Maven What is Maven at apache orgEnlaces externos EditarPagina principal de Maven 3 Pagina principal de Maven 2 Pagina principal de Maven 1 x Primeros pasos con Maven Wiki sobre Maven Plugins para Maven 2 Maven 2 codehaus tutorial Archivado el 23 de junio de 2007 en Wayback Machine Tutorial de Maven 2 Algunos libros gratuitos de Maven 2 Libro gratuito de Maven 2 Recursos sobre Maven el project object model POM y el ciclo de vida Search the Maven Repository Search the Maven Repository 2 Search several Maven repositories using Lucene engine Verify the dependencies in your POM Maven for PHPVease tambien EditarApache Continuum un servidor de integracion continua que se integra con Maven Apache Archiva un administrador de repositorio desarrollado por varios desarrolladores del nucleo de Maven Apache Ant Nexus Maven Repository Manager Datos Q139941Obtenido de https es wikipedia org w index php title Maven amp oldid 136331160, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos