Cómo montar un workspace de gvSIG para Eclipse
Los pasos a realizar para montar un workspace de Eclipse para trabajar con gvSIG son los siguientes:
Arrancamos Eclipse y creamos un nuevo workspace para gvSIG 2.0.
Establecemos el encoding usado en gvSIG (ISO-8859-1):
Window > Preferences: General > Workspace > Text file encoding = ISO-8859-1
Establecemos la compatibilidad con Java 1.5 / 5.0 en general para todos los proyectos (aquellos proyectos que son compatibles con Java ME CDC tienen establecida a compatilidad con Java 1.4):
Window > Preferences > Java > Compiler > Compiler Compliance Level = 1.5 (ó 5.0).
En eclipse, registramos el repositorio de subversion sobre el que vamos a trabajar.
Podemos acceder de dos formas al repositorio subversion de gvSIG:
- Acceso anónimo de sólo lectura.
- Acceso de lectura y escritura, para lo cuál necesitaremos un usuario en la infraestructura de gvSIG.
La url de acceso es: https://devel.gvsig.org/svn/gvsig-desktop.
Como eclipse no lleva soporte por defecto para subversion, deberemos tener instalado alguno de los plugins existentes para ello:
Note
es importante tener en cuenta la versión o configuración del plugin de soporte para subversion, ya que debemos user la misma versión de subversion desde cliente en todos los casos: linea de órdenes, eclipse, etc. Esto se debe a que, con cada versión mayor de subversion, el formato local de información cambia y no es compatible hacia atrás.
Es decir, si usamos un cliente de subversion 1.6 para hacer un checkout o un update, si a continuación usamos otro cliente de una versión anterior (1.5. 1.4, etc.), éste no funcionará correctamente.
Si accedemos a Internet a través de un proxy, deberemos configurar antes el acceso en Eclipse. Para ello accedemos a la opción:
Window > Preferences > General > Network Connection
En esta ventana de preferencias podemos configurar la conexión con el proxy de nuestra red. Dependiendo de nuestro caso, podemos elegir la opción System proxy configuration o bien la opción Manual proxy configuration y definir los valores de conexión manualmente.
Para registrar el repositorio de subversion elegido, deberemos abrir la Perspectiva de exploración de respositorios de subversion. Sino la tenemos disponible podemos abrirla desde:
Window > Open Perspective > Other : SVN Respository Exploring
Una vez abierta la perspectiva, desde la vista de repositorios SVN podemos añadir el repositorio de gvSIG.
A partir de este momento se hará referencia a algunas ubicaciones de proyectos dentro del repositorio de subversion de gvSIG. Dicho repositorio está organizado con la estructura habitual de subversion:
- trunk: última versión en desarrollo.
- tags: versiones cerradas y builds, de los que se genera un tag.
- branches: ramas de desarrollo.
A partir de ahora, en los paths de subversion indicaremos [REPOSITORY]/[VERSION] en vez de indicar el repositorio y si es trunk, tags/v2_0_0_Build_2007, etc. Hay que tener en cuenta que, en el momento de escribir este documento, la versión 2.0 se está desarrollando en la rama branches/v2_0_0_prep, que es de dónde habrá que descargar los proyectos en estos momentos, aunque en un futuro pasará al trunk.
Descargar el proyecto build.
Para ello haremos un checkout desde el repositorio de fuentes. Desde la vista de repositorios SVN, navegaremos a:
[VERSION] (ej: branches/v2_0_0_prep)
Desde aquí, seleccionaremos la carpeta build y haremos un checkout, pulsando el botón izquierdo sobre la carpeta y seleccionando la opción correspondiente. En el diálogo de checkout podemos dejar las opciones tal cuál nos aparecen y pulsamos Finish.
Una vez haya terminado, si vamos a la perspectiva Java o Resource, ya tendremos el proyecto disponible.
Como alternativa, si queremos hacerlo desde la consola, hay que lanzar lo siguiente:
svn co https://devel.gvsig.org/svn/gvsig-desktop/branches/v2_0_0_prep/build
Igual que en el caso de eclipse, si accedemos a Internet a través de un proxy, deberemos configurar el cliente de subversion para que se conecte al servidor a través del proxy. Podemos encontrar las instrucciones de configuración en el FAQ de la web oficial de subversion, o bien en el apartado sobre configuración de servidores en el libro de subversion.
Una vez descargado el proyecto build desde consola, procederemos a importarlo en Eclipse.
Abriremos la vista de Ant. Para ello usaremos la opción de menú:
Window > Show view > ant
Instalaremos la configuración básica de maven para gvSIG.
El proyecto build contiene la configuración base de maven para todos los proyectos de gvSIG en un pom.xml general y otro específico por tipo de proyecto:
- librería: build/libraries-pom/pom.xml
- librería nativa: build/libraries-jni-pom/pom.xml
- extensión: build/extension-pom/pom.xml
La primera vez, y luego cada vez que hayan cambios en alguno de estos archivos, tendremos que instalar estos archivos en nuestro repositorio local de maven. Podemos hacerlo de dos formas:
Eclipse: Añadiremos a la vista de Ant que hemos abierto, el archivo build.xml que tenemos dentro del proyecto build. Entonces nos aparecerán una serie de objetivos de ant, entre los cuáles está mvn-install. Lo lanzamos con doble click o seleccionando el objetivo indicado y pulsando en el icono con la flecha.
Consola: desde la carpeta build, lanzaremos:
mvn install
Configuraremos eclipse para que cargue correctamente los proyectos generados desde maven.
Para ello, desde la vista de ant, invocaremos al objetivo: mvn-configure-eclipse-workspace, que nos creará automáticamente una variable de entorno en eclipse que se emplea para hacer referencia a los jars gestionados de las dependencias gestionadas a través de maven. Nos preguntará por la ubicación del workspace, que generalmente será la que nos propone.
Alternativamente, desde consola podemos usar maven de la siguiente forma:
mvn -Declipse.workspace=<path-to-eclipse-workspace> eclipse:add-maven-repo
Entonces cerraremos Eclipse y lo volveremos a abrir.
Validaremos que la variable M2_REPO está definida correctamente en eclipse, a través del menú:
Window > Preferences : Java > Build Path > Classpath Variables
El valor de la variable debe ser algo como lo siguiente (cambiando [USER_HOME] por el directorio del usuario, según el Sistema operativo):
M2_REPO = [USER_HOME]/.m2/repository
Añadiremos a la vista de Ant el archivo build.xml del grupo de proyectos con el que vamos a trabajar. Más adelante se explica en detalle qué son los grupos de proyectos, por ahora lo podemos tratar como listas de proyectos (librerías y extensiones) que están dentro de la carpeta build/projects.
Si queremos descargar los proyectos de un gvSIG completo, añadiremos a la vista de ant el archivo:
build/projects/gvsig-standard/build.xml
Procederemos a descargar todos los proyectos.
Para ello, desde la vista de Ant, invocaremos al objetivo: svn.checkout.all, que nos abrirá un formulario que nos permitirá seleccionar:
- La URL del servidor de subversion, según queramos el acceso público de sólo lectura, o el que requiere usuario y contraseña con acceso de lectura y escritura.
- La versión de SVNKit a emplear. Hay que comprobar que es la misma que la empleada por el plugin de soporte a subversion que tengamos instalado en eclipse. Igual que en casos anteriores, si accedemos a Internet a través de un proxy, habrá que configurar el acceso para la librería SVNKIT. Justamente la librería lee la misma configuración que tiene el cliente de subversion nativo, cuya configuración se indica en el punto Descargar el proyecto build. Podemos encontrar más información en la propia guía de usuario de SVNKIT
- El usuario y la clave para acceder a subversion, si procede.
- Si queremos que se cree la configuración de proyecto de eclipse automáticamente, una vez terminada la descarga. Si desactivamos esta opción, deberemos generar nosotros los proyectos de eclipse, bien desde la opción mvn eclipse desde el menú de External tools, o bien desde consola con la orden: mvn -P eclipse-project.
De forma alternativa, desde consola podemos invocar a este objetivo de ant, o también podemos hacer el checkout de cada uno de los proyectos, bien desde eclipse, bien desde la consola. En este último caso, tendremos que generar también nosotros la configuración de proyecto de eclipse.
Importaremos los proyectos en eclipse. Una vez haya terminado la instrucción anterior, podemos importar los proyectos en eclipse desde el menú:
File > Import > General > Existing projects into workspace
Pulsaremos en Select root directory y seleccionamos el directorio de nuestro workspace. Nos aparecerá la lista de proyectos a importar y aceptamos, tras lo cuál Eclipse procederá a compilar los proyectos importados.
Note
al importar los proyectos, compruebe que la opción Copy projects into workspace esté desactivada, ya que lo que queremos es que se usen los mismos proyectos descargados directamente.
El plugin de eclipse para maven no relaciona los proyectos entre sí hasta que están importados dentro del workspace de eclipse, por lo tanto tendremos que regenerar la configuración de eclipse de los proyectos.
Para ello, desde la vista de Ant, invocaremos al objetivo: mvn-eclipse-eclipse. Una vez haya terminado, seleccionaremos todos los proyectos y usaremos la opción de refrescar (F5 o botón derecho y la opción Refresh).
Para terminar, el plugin de eclipse para maven genera configuración de proyecto de eclipse sólo para aquellos proyectos que son java, es decir, que tienen código fuente java. Dado que existen proyectos multimódulo, esto significa que sólo se habrá generado configuración de proyecto eclipse para los submódulos hijo finales. Por ejemplo, el proyecto org.gvsig.annotation tiene la siguiente estructura:
org.gvsig.annotation ├── org.gvsig.annotation.lib │ ├── org.gvsig.annotation.lib.api │ └── org.gvsig.annotation.lib.impl ├── org.gvsig.annotation.main └─── org.gvsig.annotation.swing ├── org.gvsig.annotation.swing.api └── org.gvsig.annotation.swing.impl
Si miramos en los proyectos importados actualmente, veremos que tenemos sólo los siguientes:
- org.gvsig.annotation.lib.api
- org.gvsig.annotation.lib.impl
- org.gvsig.annotation.main
- org.gvsig.annotation.swing.api
- org.gvsig.annotation.swing.impl
Necesitaremos tener, al menos, el proyecto padre raíz para poder tener todas las actualizaciones cuando nos sincronicemos desde subversion, además de permitirnos realizar acciones en todos los submódulos de un mismo proyecto.
Para ello no hay otro remedio que realizar el siguiente proceso para cada uno de estos proyectos padre:
Seleccionar en el menú de eclipse File > New > Project....
En la ventana que aparece seleccionaremos la opción General > Project y pulsaremos Next
En la siguiente ventana, rellenaremos los siguientes campos:
- Project name: El nombre del proyecto padre a importar, ej: org.gvsig.annotation.
- Use default location: Marcaremos esta opción
Finalmente pulsaremos Finish y ya tendremos el proyecto en eclipse. Se trata de un proyecto no java, por lo que no editaremos los fuentes java desde el mismo, sino desde el subproyecto hijo correspondiente. Estos proyectos sólo los usaremos para realizar acciones de maven sobre todos los hijos, o para sincronizar con subversion.
Los proyectos a importar de esta forma son:
- org.gvsig.annotation
- org.gvsig.annotation.app
- org.gvsig.app.document.layout.app
- org.gvsig.app.document.table.app
- org.gvsig.exportto
- org.gvsig.exportto.app
- org.gvsig.geometrymeasurement.app
- org.gvsig.hyperlink.app
- org.gvsig.installer
- org.gvsig.installer.app
- org.gvsig.newlayer
- org.gvsig.newlayer.app
- org.gvsig.personaldb
- org.gvsig.selectiontools.app
- org.gvsig.symbology
- org.gvsig.symbology.app
Note
Este paso final es ciertamente farragoso pero no hemos encontrado otra forma más automática de hacerlo. En su momento probamos a subir a subversion los .project de estos proyectos padre, pero entonces eclipse, al hacer la importación de todos los proyectos inicial, sólo incluía los de los proyectos padre. Entonces tocaba ir subproyecto por subproyecto importándolo, y es todavía peor que esta opción. Existe la opción de usar el plugin de maven para eclipse, pero eso nos da algunos otros problemas que tenemos pendiente resolver.