Compilando Mondrian (2ª parte)

«last updated July, 2005». Así comienza el documento titulado «Guide for Mondrian developers» (http://mondrian.sourceforge.net/developer.html). Para que os hagáis una idea, los binarios de Mondrian 2.0.1 están compilados en diciembre de 2005, y los de Mondrian 2.1.1 el 30 de mayo de 2006. Si es que la documentación no sirve para nada si no se actualiza… Llevo varios días tratando de compilar Mondrian usando este documento, y de momento he descubierto ya los siguientes errores:
  • En la documentación menciona que se debe establecer la variable de entorno «TOMCAT_HOME», apuntando al directorio de instalación de Tomcat. Sin embargo, en el «build.xml» para el ANT se aprecia que la variable de entorno de la que se obtiene el path de TOMCAT debe ser «CATALINA_HOME», y no «TOMCAT_HOME».
  • Hay un archivo BAT (indocumentado) llamado «build.bat», que aparentemente establece el CLASSPATH para que se pueda compilar Mondrian sin problemas… sin embargo, no funciona si el ANT se ha instalado en un directorio que contenga espacios (por ejemplo, si cuelga de «program files»). El fallo es fácil de corregir; sólo hay que poner unas comillas en la línea que lanza «ANT.EXE» al final del script. Sin embargo, a pesar de esta corrección, el build.bat sigue sin funcionar… así que lo he descartado y he seguido los pasos que indica la documentación (lanzar directamente el ANT).
  • A pesar de que leáis lo contrario en muchos sitios, con Mondrian 2.1.1 se debe usar XALAN 2.7, y NO 2.6. En muchos sitios se indica que se debe usar Xalan 2.6, pero esta información es válida sólo para Mondrian 2.0.1. En la documentación de Mondrian, para variar, no se da ninguna información al respecto. Este detalle es importante, porque la jerarquía de paquetes de Xalan 2.6 y 2.7 es totalmente distinta. Hay que usar el paquete correcto para evitar las «ClassNotFoundException».
  • Tampoco se menciona cual es el CLASSPATH que se debe utilizar para compilar Mondrian… por el método de ensayo y error, y gracias a la página «http://www.jarfinder.com/» (no se qué sería de mi sin ella), de momento he llegado a la conclusión de que deben añadirse al Classpath:
    • xml-apis.jar (es parte de la distribución de XALAN)
    • xercesImpl.jar (es parte de la distribución de XALAN)
    • javacup.jar (viene con el propio Mondrian, pero por algún extraño motivo, hay que meterla explícitamente en el CLASSPATH).
    • commons-math-1.1.jar (hay que descargársela del proyecto Jakarta). Con Mondrian ya viene la commons-math-1.0.jar, pero a mi al menos, no me funciona con esta librería. De nuevo, parece que el proyecto usa clases que no están en esta versión de la librería… así que conviene actualizarla.
  • Si os estáis tratando de compilar el paquete «ZIP» de Mondrian que se descarga de Sourceforge, tened en cuenta que le falta un archivo que resulta crítico: %MONDRIAN_HOME%srcmainmondrianrolapaggmatcherDefaultRules.xml. Descargadlo del sistema de control de fuentes Perforce, porque es imprescindible. De todas formas, es conveniente que se descargue TODO del Perforce, porque en el ZIP de la distribución faltan un montón de archivos (practicamente todas las queries que se utilizan en los tests unitarios).
  • Es recomendable usar JDK 1.5 y Tomcat 5.5 (aunque también funciona con JDK 1.4 y Tomcat 5.0, el parser XML de JDK 1.5 aparentemente corrige el bug relacionado con el «Byte Order Mark» que os comentaba en mi post anterior).
Siguiendo los pasos de la guía de Mondrian, y con estas notas que os he indicado, probablemente consigáis compilarlo (a mi al menos me han funcionado). Eso sí, si habéis partido de los fuentes descargados desde SourceForge, veréis que 71 tests unitarios fallan. No os empeñéis en intentar pasar los tests con esta versión… sencillamente, jamás funcionarán debido a que a la distribución de Mondrian 2.1.1 de Sourceforge le faltan 71 archivos (además del ya mencionado «DefaultRules.XML»). Yo os recomiendo que partáis de los fuentes directamente descargados del servidor de control de fuentes Perforce que ofrece el equipo Mondrian.
Para compilar los tests unitarios, tenéis que tener en cuenta que además de los pasos que se indican en la guía para desarrolladores, necesitaréis:
  • jUnit versión 3.8.x (con la 4.x no funciona). El JAR correspondiente debe añadirse al Classpath.
  • XMLUNIT 1.0. El JAR del XMLUnit debe estar en el CLASSPATH.
Con estos pasos ya deberíais poder compilar vuestras propias versiones de Mondrian. Para además de compilar, poder ejecutarlo de forma controlada y poder depurar lo que está pasando, os recomiendo que creeís un proyecto Eclipse partiendo del «build.xml» de Mondrian. Hay infinidad de páginas que enseñan a depurar servlets de Tomcat con Eclipse… os recomiendo esta: http://javaboutique.internet.com/tutorials/three/index.html

Deja un comentario

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