Como compilar ================ Para compilar la aplicacion gvSIG es necesario disponer de: - maven instalado en el sistema, recomenado maven 3 (aunque podria compilar con maven 2). - Acceso a internet para acceder a los repositorios de maven de la aplicacion. - Si usan maven2 debera configurar la variable MAVEN_OPTS con el valor adecuado (ver "notas de compilacion"). - Descargar la carpeta org.gvsig.desktop y ejecutar "mvn clean install". Esto, por defecto, desplegara en la carpeta target/product la instalacion de gvSIG. Notas de compilacion ======================== MAVEN_OPTS ------------ Usando maven 2, para que compile correctamente gvsig precisaremos especificar en la variable MAVEN_OPTS una serie de valores para reserbar memoria para el compilador. Valores adecuados para la compilacion del proyecto "org.gvsig.desktop" son:: -Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m Para asignar estos valores en linux puede hacerlo ejecutando la siguiente instruccion en la linea de comandos desde la que vaya a compilar:: export MAVEN_OPTS="-Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m" En Windows se establece en esta opción o similar (depende de versión de Windows): Panel de control > Sistema > Configuracón avanzada del sistema > Variables de entorno > Nueva (en el valor no hace falta comillas) Si esta compilando desde eclipse, precisara tener instalado el plugin maven2e Usando maven2, cuando no especifica correctamente estos valores pueden aparecerle errores como: - Error "Compilation failure...":: [ERROR] BUILD FAILURE [INFO] --------------------------------------------------------------- [INFO] Compilation failure Failure executing javac, but could not parse the error: The system is out of resources. Consult the following stack trace for details. java.lang.OutOfMemoryError: PermGen space - Error "Error while executing forked tests...":: [ERROR] BUILD ERROR [INFO] --------------------------------------------------------------- [INFO] Error while executing forked tests.; nested exception is org.apache.maven.surefire.booter.shade.org.codehaus.plexus.util.cli.CommandLineException: Error setting up environmental variables java.io.IOException: error=12, Cannot allocate memory gvsig-devel.properties ------------------------------ Por defecto al ejecutar "mvn install" sobre org.gvsig.desktop la aplicacion se desplegara en la carpeta target/product de ese mismo directorio. Una vez ejecutado ese primer comando maven sobre la carpeta org.gvsig.desktop debera editar el fichero ".gvsig-devel.properties" de la carpeta del usuario si desea cambiarlo. Si tiene varios espacios de trabajo y desea que cada uno despliegue sobre una carpeta distinta puede copiar el fichero de su carpeta de usuario a la carpeta raiz de org.gvsig.desktop con el nombre "gvsig-devel.properties" y cambiar en el sobre donde quiere hacer el despliegue, asi puede tener varias "instancias" del desarrollo de gvSIG desplegandose sobre sitios distintos. Si ejecuta "mvn install" desde algun subproyecto de org.gvsig.desktop tenga en cuenta que solo se utilizara el fichero ".gvsig-devel.properties" que hay en su carpeta de usuario y no el del que se encuentre en org.gvsig.desktop. Notas pendientes ================= Puede ser interesante mirar el plugin http://mojo.codehaus.org/versions-maven-plugin/ Importantes ------------- - En el pom de org.gvsig.desktop.installer hay una variable que falta por definir. No tengo nada claro que valor a de tener. - Hay que añadir la gestion de alias de paquetes del administrador de complementos. A tener en cuenta -------------------- - Andami se lleva ahora muchas mas dependencias que antes, entre otras el api de la libreria de proyecciones (se lo lleva org.gvsig.ui) pero como no se lleva una implementacion peta en la inicializacion. De momento he puesto un exclude de org.gvsig.projection en el assembly. - Los snappers que hay en appgvsig dependen de jts. Habria que ver de cambiar su implementacion para que usen el API de la libreria de geometrias y eliminar la dependencia de compilacion de appgvsig hacia jts del pom. - TangentPointSnapper - PixelSnapper - MediumPointSnapper - PerpendicularPointSnapper - NearestPointSnapper - La clase Line2DOffset en org.gvsig.symbology.lib.impl hace uso intensivo de JTS. Ver si es viable crear una operacion sobre la geometria que haga lo que hace esa clase. - En org.gvsig.symbology.swing se hace uso de funcionalidades de andami. - Hay que repasar la asignacion de iconos a las capas. Ver la extension de extDWG, pero puede afectar a otras. - Ver que pasa con las clases de DAL FeatureQueryOrder y DefaultFeatureComparator. De momento he hecho una chapuza y he incrustado DefaultFeatureComparator dentro de FeatureQueryOrder en el API. - En la libreria de geometrias, la operacion Equals y el metodo equals de Geometry hacen cosas distintas. En mapcontext, EqualsGeometryEvaluator, he sustituido la llamada a la operacion por el metodo. - El proyecto org.gvsig.new.layer.lib.impl tiene una dependencia con org.gvsig.projection.cresques.ui - En PluginServices, en el metodo getPluginHomeFolder, habria que hacer que si es nuevo copie los contenidos de los AlternativeNames a el. De esta forma seguira funcionanado con la configuracion que tuviese el usuario aunque se renombre un plugin.