Problema al crear nuevo módulo de un proyecto Maven

miércoles, 12 de septiembre de 2012

Al estar creando un nuevo módulo para un proyecto Maven usando Spring Source Tool Suite 2.9.2.RELEASE surgió el siguiente error:

Could not calculate build plan: Failed to parse plugin descriptor for org.apache.maven.plugins:maven-resources-plugin:2.4.3 (C:\Users\jruiza\.m2\repository\org\apache\maven\plugins\maven-resources-plugin\2.4.3\maven-resources-plugin-2.4.3.jar): error in opening zip file
Failed to parse plugin descriptor for org.apache.maven.plugins:maven-resources-plugin:2.4.3 (C:\Users\jruiza\.m2\repository\org\apache\maven\plugins\maven-resources-plugin\2.4.3\maven-resources-plugin-2.4.3.jar): error in opening zip file
El problema surge porque STS viene configurado por defecto para usar la librería de Maven embebida, sí, la que viene con el IDE, y esta tiene sus propias configuraciones como la ruta del repositorio de librerías. Al ser así, Maven intenta encontrar el repositorio en la ruta por defecto establecida, que es C:\Usuario\.m2\repository\ pero mi repositrio existe en otra ruta, por lo tanto ocurre este error.
Para solucionarlo simplemente modifiqué las configuraciones de la instalación de Maven y el repositorio.

Desde el menú superior: Window>Preferences>Maven>Installations
Aquí agregué una nueva instalación de Maven, la cual estoy usando en lugar del que viene embebido con STS.
Desde el menú superior: Window>Preferences>Maven>User Settings
Aquí seleccioné el archivo de configuración de Maven que requiero usar. De esta forma toma la ubicación del repositorio de Maven que tengo configurado en el archivo.


Una vez hechas estas configuraciones volví a intentar crear el nuevo modulo de Maven y funcionó correctamente.


Depurar codigo desde Eclipse usando el plugin de Jetty para Maven

martes, 10 de enero de 2012

Hace ya un tiempo estuve desarrollando una aplicación usando Maven como sistema de building. Pero llegué al punto de que cuando quería depurar la aplicación desde Eclipse, simplemente por la forma en la que funciona el plugin de Jetty para Maven, no me redirigía al código fuente cuando se detenía en un breakpoint, sino en el .class, claro, eso es un problema cuando necesitas ver las líneas de código. Pues bien, luego de un poco de búsqueda, encontré que en la documentación del plugin de Jetty explican cómo lograr depurar el código fuente.

Simplemente es necesario seguir el tutorial que está disponible en

Con esos dos pasos se puede comenzar a depurar el código usando Eclipse, un poco tedioso pero muy rápido de configurar y funciona muy bien.

Files are locked on Windows and can't be replaced

domingo, 1 de enero de 2012

Existe un problema al estar usando el plugin de Jetty para Maven, y es que el plugin bloquea (lock) los archivos de contenido estáticos como .html, .css, .js e imágenes y los usa en memoria (algo de un conector NIO). Por tal razón, si se está ejecutando un comando como mvn jetty:run, y se intenta editar este tipo de archivos, entonces aparece este error.


image.png
Para solucionar este problema, en la página del plugin tienen documentado este problema, que sucede solo con Windows. (Files locked on Windows)
Para solucionarlo se debe hacer lo siguiente:
1. Deshabilitar el uso de archivos mapeados en memoria. Para hacer esto, se debe extraer el archivo org/mortbay/jetty/webapp/webdefault.xml localizado en el JAR de Jetty (lib/jetty.jar) y cambiar la siguiente configuración a FALSE:

<init-param>
<param-name>useFileMappedBufferparam-name>
<param-value>trueparam-value>
init-param>

2. Asegurarse que esta configuración se aplica a todas las webapps. Para hacerlo, la siguiente configuración en etc/jetty.xml debe apuntar hacia nuestro archivo:
<Call name="addLifeCycle">
<Arg>
<New class="org.mortbay.jetty.deployer.WebAppDeployer">
<Set name="contexts"><Ref id="Contexts"/>Set>
<Set name="webAppDir"><SystemProperty name="jetty.home" default="."/>/webappsSet>
<Set name="parentLoaderPriority">falseSet>
<Set name="extract">trueSet>
<Set name="allowDuplicates">falseSet>
<Set name="defaultsDescriptor">/jesfre/jetty/mywebdefaults.xmlSet>
New>
Arg>
Call>

Espero les sirva y puedan seguir codificando a gusto.