jueves, 25 de marzo de 2010

Generación de código JAXB con Maven

Si tu intención es describir la verdad, hazlo con sencillez y la elegancia déjasela al sastre.
- Albert Einstein.

Al hilo de lo que comentaba en el artículo "Desarrollo en equipo con SVN, Maven y Nexus", una de las maravillas de usar Maven es que te facilita la reproducibilidad, por ejemplo, de la gestión de la configuración de un proyecto. El caso que voy a exponer es un estupendo ejemplo: la generación de código JAXB a partir de esquemas XML (XSD).

La generación de código JAXB se ha venido haciendo típicamente de dos formas: a través de una herramienta o utilidad (wizard, plugin, etc...) de nuestro IDE, o "manualmente" usando la tarea xjc de ant, o el compilador xjc por línea de comando directamente. Personalmente, nunca me ha gustado usar las herramientas automáticas de los IDE, porque ocultan la configuración del proyecto: los settings que se configuran en un wizard del IDE se acaban perdiendo porque no se suben al repositorio de código o si se hace, atas el proyecto a una herramienta que puede que no uses (tú u otro compañero a quien le toque modificarlo) varios meses después cuando te encuentras con el mantenimiento de un proyecto cuya configuración no es reproducible. Además, esa tarea suele ser repetitiva y necesita ser ejecutada a menudo, especialmente en las fases iniciales donde se va ajustando nuestro esquema XML a los tipos de dato que vamos necesitando, de modo que acabo haciendo "a mano" una tarea ant que realice la generación o un shell script que realice la llamada al compilador xjc con los parámetros que quiero.

Afortunadamente, podemos hacer que Maven realice esta tarea automáticamente como parte de sus labores de construcción, y como tenemos nuestro pom.xml subido a svn, todas nuestras preferencias de generación permanecen autocontenidas en el proyecto: simple, sencillo y sin ataduras a ningún IDE.

Iba a poner aquí los trozos necesarios a incluir en el pom.xml extraído de uno de los módulos del proyecto en el que estoy trabajando pero, la verdad, sería redundante porque está perfectamente explicado en el sitio del plugin JAXB XJC de Maven.

En mi caso, que uso Eclipse con m2eclipse (plugin de maven para eclipse), la integración con Maven es tal, que basta con realizar una modificación el XSD y salvarlo para que se regenere y recompile la clase automáticamente y tenga disponibles los nuevos métodos en mis clases "cliente" de forma instantánea (m2eclipse ejecuta el "generate" de Maven integrado con el propio build de Eclipse).

Otra razón más para continuar recomendando usar Maven.

Referencias:

domingo, 7 de marzo de 2010

Balteus cumple un año

“Yo…he visto cosas que vosotros no creeríais. Naves de guerra ardiendo más allá de Orión. He visto rayos-c resplandecer en la oscuridad, cerca de la puerta de Tanhäuser. Todos esos…momentos se perderán…en el tiempo. Como…lágrimas…en la lluvia. Es hora…de morir”.

--Roy Batty, Blade Runner.

Ya ha pasado un año desde mi primer artículo. Una primera entrada impetuosa que escribí sin presentación, casi por rabia, tras perder demasiado tiempo en un error absurdo, de ésos que te vuelven loco, y de los que sólo te sirven para aprender que debes cuestionarlo todo y no dar nada por sentado. Fue en ese estado de rabia contenida y aliviada, tras solucionar el error, cuando decidí que debía compartir estas experiencias con otros desarrolladores, tal y como hacen miles de compañeros alrededor del mundo, de cuyos trabajos y generosidad me he ido aprovechando durante años, ahorrándome muchas horas y disgustos. Tras ése primer post, escribí realmente la presentación del blog con mis motivos y objetivos.

He querido comenzar este post con la que es, probablemente, la cita más conocida de todos los locos entusiastas del cine de ciencia ficción... Parece una entrada melancólica, pero nada de eso en absoluto: simplemente es un homenaje a Ridley Scott y a la película. Yo creo que no hay desarrollador que no haya dicho o pensado algo así tras una puesta en producción... ¿eh? ;-)

1 año. 25 Entradas. 2 entradas al mes, de media. Menos de lo que me gustaría... pero no encuentro tiempo para mucho más. "La falacia de la Ingeniería del Software" y los artículos de la serie "Banco de experiencias" son probablemente las entradas de las que me siento más satisfecho (aunque, curiosamente, no son las que más interés despiertan). De los datos y números que aporta Google Analytics, destacaría dos cosas:
  • La gente busca soluciones. Las entradas más consultadas son aquellas en las que comento cómo he solucionado un error o problema. Lo cual es lógico. En mi caso también ha sido así. Muchos de los blogs en los que he aterrizado ha sido vía google, buscando una determinada solución. En definitiva, cuando tenemos un problema, buscamos si a otra persona le ha pasado lo mismo antes de perder más tiempo. Como digo, constato una evidencia que ya suponía.
  • Realmente el blog tiene visibilidad en todas partes del mundo. Internet hace que todo el mundo sean un montón de ordenadores conectados sin importar localización, idioma o frontera. Parece evidente. Es evidente. Sin embargo, cuando lo confirmas con datos concretos da cierto vértigo. Asumes las lógicas visitas de España y países de habla hispana (al fin y al cabo escribo en español)... pero llaman la atención visitas de Estados Unidos, Alemania, Suiza, Rusia, Brasil, Polonia, India, Finlandia, Corea... ¿Hispanohablantes por el mundo? ¿O simplemente hay gente que busca su respuesta esté en el idioma que esté? (yo lo hago... quizá los angloparlantes, germanoparlantes, etc... también).
En fin, son un par de obviedades con las que todo el mundo cuenta... pero que nunca dejan de sorprender. Al fin y al cabo tenemos una dimensión local y finita... Que lo que escribes pueda ser de interés para alguien tan lejano, impresiona, la verdad.

En todo caso tendré en cuenta estas reflexiones para mis próximas entradas. Es posible que los localismos comentados en "Magnitudes astronómicas" no sean tan claros para gente que no conoce Madrid. Por otro lado, es difícil no hacer referencias al mundo que te rodea. Con respecto a la temática, mi trabajo diario suele darme material de sobra para seguir compartiendo "soluciones" y "experiencias". Así que seguiré en ello.

Gracias a los que visitáis el blog, seáis de donde seáis. Un afectuoso saludo.
Related Posts Plugin for WordPress, Blogger...
cookieassistant.com