Amago de pasar a maven 3.0.4

Hace tiempo que está maven 3.x disponible para usar y hace tiempo que tengo pendiente probarlo, sigo con mi maven 2.2.1. Hoy, como tenía un rato y estaba investigando algunas cosillas de maven, decidí bajarme y probar con la 3.0.4

Me puse con un proyecto relativamente sencillo, no es más que un jar con un main que hace consultas a unos web services (usando apache CXF) y mete los resultados en una base de datos (con Hibernate y PostgreSQL). Por supuesto, tiene un assembly para generar un zip con todas las dependencias y poder instalarlo fácilmente en el servidor de producción.

Pues nada, pruebo con maven 3.0.4 y lo primero que veo es que saca más log y es más "protestón". Donde maven 2.2.1 hace y no dice ni mú, este saca warnings de cosas que tienes mal y deberías arreglar. Le voy haciendo caso, puesto que es más sabio que yo y hay que hacerle caso. Al final consigo compilar todo sin warnings con maven 3.0.4. Genero mi zip assembly, me lo llevo al servidor de pruebas, lo desempaqueto, lo arranco y …. "NoDefClassFound".

Horror. Búsqueda de la clase pérdida, está en un jar stax2-api, necesitado por un woodstox-core-asl, que a su vez es necesitado por una librería de CXF. Curioso, ese jar parece estar dentro del zip en su sitio correcto. Reviso el fichero de manifiesto del jar con el main y la dependencia está. La clase perdida efectivamente está dentro del jar. ¡Qué cosa más rara!. Un rato mirando y remirando… hasta que me doy cuenta que la versión del stax2-api no es la misma en el fichero de manifiesto que la del jar que hay en el assembly. Una es la 3.0.5 y la otra la 3.1.1.

A revisar. Pues no, el pom.xml está bien, de hecho,  no referencia directamente esa librería para nada. mvn dependency:tree me dice que necesito la 3.0.5. El fichero de manfiesto generado con el maven-jar-plugin añade al Class-Path la 3.0.5, pero el maven assembly mete la 3.1.1.

Vuelta a maven 2.2.1 (sólo cambiar el path donde se busca maven) y listo, arreglado, ya funciona bien y no hay incoherencia de versiones. Así que nada, me sigo quedando con 2.2.1. O bien el plugin assembly no es muy compatible con maven 3.0.4, o bien tengo alguna cosa rara en algún sitio que afecta sólo a esa versión nueva de maven y no a la vieja.

Entradas relacionadas:

1 comentario en “Amago de pasar a maven 3.0.4

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.