Maven
Maven java.lang.OutOfMemoryError
Trabajando con maven recientemente tuve problemas durante el proceso de construcción de mi aplicación y es que la compilación terminaba abruptamente especificando el siguiente error.
java.lang.OutOfMemoryError: Java heap space ...
Introducción a Maven
Es una herramienta de la Apache Software Foundation especializada en gestionar el ciclo de vida de proyectos de software, cuya filosofía es proporcionar un esquema consistente para la ejecución de las diversas fases de la construcción del software, desde la creación del proyecto en sí, hasta distribución del o los componentes producto del proyecto.
Dentro de la principales características que hacen de maven una potente herramienta para la gestión de proyectos de software se encuentran las siguientes.
Maven. Instalar fuentes y javadocs en el repositorio
Cuando gestionamos nuestros proyectos de software con Maven tenemos la posibilidad de instalar en el repositorio no sólo la distribución binaria
mvn install
También podemos configurar el POM para instalar los fuentes y los javadocs del proyecto.
Configuración para agregar los fuentes
Definir rangos para la versión de dependencias en Maven
Cuando trabajamos con Maven suele ocurrir que una o más de las dependencias que hemos definido cambia constantemente de versión y nos vemos en la necesidad de actualizar al mismo ritmo nuestro POM para tener la última versión. Esto no es realmente necesario ya que podemos definir las versiones de nuestras dependencias en base a rangos. A continuación una serie de ejemplo de cómo podemos definir dichos rangos.
Algunos comandos útiles de Maven
Actualmente IDEs como Netbeans y Eclipse tienen muy buena integración con maven, permiten la ejecución simplificada de comandos incluyendo argumentos y modificadores, es muy sencillo agregar dependencias y mover los repositorios, lo más recomendable es explotar este tipo de prestaciones de nuestros IDEs en pos de la productividad, sin embargo hay ocasiones en las cuales no contamos con este tipo de software y requerimos realizar tareas con maven, para este tipo de ocasiones, dejo algunos comando útiles.
Gestión de Glassfish Maven. Deploy de aplicaciones.
La comunidad Glassfish provee de un plugin para la gestión del contenerdor JavaEE desde Maven 2. A través de este plugin se pueden ejecutar las tareas administrativas más comunes para los desarrolladores: inicio y parada de un dominio, deploy, undeploy y redeploy de aplicaciones, incluso se pueden crear y destruir dominios.
Para configurar el plugin en un proyecto Maven 2 sólo requerimos agregar las siguientes líneas en nuestro POM.
Herencia y Agregación en Maven
En Maven la unidad central de trabajo es el POM (Project Object Model) el cual es un archivo XML (pom.xml) en el cual se describe y especifica la configuración para la construcción de un proyecto.
En el POM podemos declarar las dependencias que requiera nuestro proyecto, los repositorios desde los cuales se descargarán las dependencias; también se pueden configurar plugins, los cuales son puntos de extensión a la funcionalidad de Maven, etc.
Dependencias en Maven
Una de las grandes ventajas que nos proporciona Maven es la resolución de dependencias, esta se basa en la centralización de componentes (artefactos) en un repositorio. Los repositorios mantienen una indexación "estándar" de los artefactos. La idea es que con unos cuantos datos podamos agregar artefactos en nuestros proyectos java.
Instalar artefactos en reposotorio local de Maven
En ocasiones debemos incluir en nuestros proyectos dependencias hacia proyectos que no se encuentran en los repositorios de maven. Esto no debe representar un problema para nuestro desarrollo ya que maven nos permite la instalación de artefactos en nuestros repositorios locales. Sólo debemos conseguirnos la distribución del proyecto ya sea jar, war, ear.
El comando para instalar el artefacto es el siguiente:
Configuración de Maven para compilar JasperReports
Es muy común que en nuestros proyectos de desarrollo de software tengamos la necesidad de generar reportes. En Java tenemos diversas opciones para esta labor, algunas con licencias privativas y otras OpenSource.
Uno de los proyectos OpenSource con mayor madurez y adopción en la generación de reportes es JasperReports, el cual cuenta con un motor (o engine) para la compilación y explotación del reporte y una herramienta gráfica para el diseño de las plantillas (iReport).
