¿Es tan bueno maven?

Habitualmente usamos maven en el trabajo y estoy encantado. Hay muchas cosas que resuelve él solito y cuando lo tienes ya todo configurado es realmente una maravilla.

Sin embargo, hay un pequeño problema, que aunque conozco de hace tiempo, todavía no lo había sufrido o, aunque lo hubiera sufrido, no me había afectado. Sin embargo, hoy ha "cantado".

El problema son las dependencias. Imagina por ejemplo que tu proyecto decides depender de log4j-1.2.15.jar y de otra-libreria-1.3.jar. Aunque tú no lo ves, esta librería puede a su vez decir que depende de log4j-1.2.13.jar. Cuando compilas, haces tu despliegue, etc, etc … tienes en el classpath y en todos lados dos versiones de distintas de log4j. Si no son muy compatibles, puedes tener problemas al compilar o en ejecución.

Existe forma de decir que no quieres que se traiga las dependencias anidadas, pero eso ya requiere que las vayas identificando para decir "esta sí", "esta no".

El problema que se nos ha presentado hoy ha sido el siguiente: En un módulo que estamos desarrollando nuevo hemos metido un plugin de maven pmd que revisa las métricas del código (complejidad ciclomática, métodos largos, etc, etc), de forma que el compilado falla si las métricas no se cumplen. Pues bien, la versión en CVS a unos les compilaba y a otros les daba fallo de métricas.

Así que nos pusimos en dos ordenadores, uno en el que sí compilaba y oto en el que daba fallo. Revisamos que el proyecto está correctamente sacado de CVS sin cambios en ninguno de los dos lados, que toda la jerarquía de pom.xml hasta el padre es igual y nada, seguimos teniendo el problema.

Cogemos en ambos ordenadores y en el repositorio local de jars de maven borramos el del plugin de pmd. Compilamos … y sorpresa. Cada uno se baja una versión distinta de pmd. Una casca y la otra no. En ningún sitio ponemos la versión de pmd que queremos, así que maven se baja la que le apetece según algún criterio misterioso.

Así que ahí estamos, pensando si obligar a maven a bajar una determinada versión de pmd o si pasar del plugin este y dejar a la complejidad ciclomática evolucionar a su libre albedrío.

Esta entrada ha sido publicada en maven y etiquetada como . Guarda el enlace permanente.

2 respuestas a ¿Es tan bueno maven?

  1. Rodrigo dijo:

    El plugin PMD es bastante bueno y te puede ayudar en muchas cosas que no sean únicamente complejidad ciclomática. La complejidad ciclomática es interesante hasta cierto punto y no hay que obsesionarse. Es muy útil para conocer el número de pruebas que deberías tener porque más complejidad equivale a más ramas dentro del código. Lo único complicado que tiene el PMD es su personalización ya que hay que codificar, y no es nada trivial como hacerlo.
    Por otro lado también te recomiendo el CheckStyle que tiene reglas similares al PMD pero que también lo complementa. Este último es más fácil de configurar y añadir reglas.
    De todas maneras estos plugins no son la panacea universal. La mejor revisión sigue siendo la manual en la cual un programador con más experiencia puede encontrar más fallos o mejoras en los algoritmos.
    Aún así pruebalos porque ayudan en algunas cosas interesantes (y no sólo en la complejidad ciclomática).

    Saludos,

  2. Chuidiang dijo:

    Hombre, Rodrigo, cuánto tiempo.

    Tenemos PMD, pero no sólo con la complejidad ciclomática, sino con un montón de reglas que vienen con él.
    La ventaja de integrar PMD con maven es que el compilado falla si no pasa las métricas. Si dejas el pasar o no las métricas a la gente según codifica o con un warning en el eclipse, lo más probable es que al final no cumplas ninguna. Obviamente, PMD con maven permite marcar algunos métodos o clases para que pasen la métrica aunque no la cumpla, pero es algo que procuramos no hacer salvo casos excepcionales.

    Se bueno.

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.