Personal tools
You are here: Home Development Documents gvSIG desktop 1.9 Comos Como desarrollar contra unos binarios de gvSIG
Document Actions

Como desarrollar contra unos binarios de gvSIG 1.9

by Luis Sevilla last modified 2010-06-01 22:45

Como configurar eclipse para desarrollar extensiones apoyándose en una instalación standard de gvSIG v.1.9, sin necesidad de descargarse los fuentes de los proyectos.

Note

Este documento describe un procedimiento válido para la versión 1.9 de gvSIG. No está actualizado para la 2.0.

Note

Podemos encontrar un documento que explica como hacerlo contra un gvSIG version 1.1.2 aqui

Introducción

Crear un nueva extensión de gvSIG en eclipse se puede hacer de dos formas.

  • Crear un workspace con los fuentes de gvSIG (libfmap, _fwandami, etc...) además de un proyecto para la extensión.
  • Crear un workspace sólo con el proyecto de la extensión y utilizar los binarios de gvSIG para ejecutarla.

Este documento detalla la segunda opción.

En resumen, se trata de crear un nuevo proyecto para nuestra extensión y decirle a eclipse que cuando la ejecutemos arranque primero gvSIG, que ya contendrá nuestra extensión, copiada a su carpeta de extensiones con un "build.xml" personalizado.

Como ventajas de este método destaco:

  • Que compila más rápido, al tener sólo nuestro proyecto para la extensión.
  • No se "toca nada" accidentalmente de la distribución estándar, asegurándonos que nuestra extensión funcionará con los binarios oficiales.

Como desventaja Como nuestro proyecto se ejecuta en binario, al hacer modificaciones en el código, hay que compilar y distribuirlo en la carpeta de extensiones de gvSIG. Es muy fácil olvidarse de este paso, y común creer que el código que se está ejecutando es el que acabamos de modificar.

Creación del nuevo proyecto y configurar el arranque de gvSIG en Eclipse.

La versión de eclipse con la que se ha redactado este manual es la 3.4.2, con lo que en versiones posteriores puedría haber ligeras modificaciones.

En un workspace en blanco crear un nuevo Proyecto Java para nuestra extensión.

File/New/Other/Java Project.

Project Name: SampleExtension

Contents: Create new project in workspace

JRE: seleccionar por defecto o configurar la máquina virtual que se quiera utilizar.

Project Layout: Create separate folders for sources and class files

Pulsar el botón Next

Seleccionamos la pestaña Libraries.

Pulsamos el boton add Variable

En el nuevo cuadro de dialogo New Variable Classpath Entry pulsamos el boton Configure variables

y en el cuadro de Preferences que aparece pulsamos el boton New para crear una nueva variable.

En el cuadro de dialogo New Variable Entry le ponemos por nombre GVSIG_INSTALL_DIR y como valor el directorio donde hemos instalado el gvSIG (ej.: /home/xxx/gvSIG_1.9) (ej.:C:Archivos de programagvSIG_1.9).

Pulsamos el boton OK.

En Preferences pulsamos también OK.

De nuevo el dialogo New Variable Classpath Entry seleccionamos la variable que acabamos de crear y pulsamos sobre el boton Extend, en el dialogo Variable Extension seleccionamos bin/andami.jar y pulsamos sobre el boton "Ok". Finalizamos la creación del proyecto pulsando 'Finish' en el diálogo 'New Java Project'.

Si vamos a utilizar una máquina virtual 1.5_x (la normal en el caso de la distribución oficial de gvSIG v1.9, debemos especificarle a eclipse que el código que genere será compatible 1.5. Para eso damos click con el bot'on derecho sobre el nombre del proyecto en el 'Package Explorer' y allí en Porperties. En el diálogo 'Properties for...' seleccionamos 'Java Compiler' del menú de la izquierda , y en el diálogo 'Java Compiler' que se nos abre activamos 'Enable project specific settings'. En la sección 'JDK compliance level' szeleccionamos '1.5'. Damos click en 'OK' para finalizar, y validamos con 'YES' en el message box de confirmación que nos aparecerá.

Creamos ahora una configuracion de ejecucion pulsando en la barra de menus Run/Run Configurations ... (o en el boton correspondiente). En el cuadro de dialogo Run hacemos doble click en Java Application.

Aparece un nuevo tipo de ejecucion llamada New_configuration a la que le cambiaremos el nombre por gvSIG v1.9.

En la pestaña Main, en el apartado "Project" pulsamos el boton Browse y seleccionamos nuestro proyecto SampleExtension, y en el apartado Main class ponemos com.iver.andami.Launcher.

En la pestaña Arguments, crearemos primero una variable pulsando sobre cualquiera de los botones Variables.... En el cuadro de dialogo Select Variable pulsamos sobre el boton Edit variables y en el dialogo Preferences sobre el botón New. En el nuevo cuadro de dialogo que aparece New String Substitucion Variable le damos un nombre GVSIG_INSTALL_DIR y un valor que será el directorio donde hemos instalado gvSIG, si queremos poner una descripcion también podemos hacerlo, y pulsamos OK. (Esta variable podemos crearla tambien desde el cuadro de dialogo Preferences que aparece al pulsar sobre la barra de menús Window/Preferences, seleccionando Run/Debug/String Substituition.)

Pulsamos Ok en la ventana "Preferences" y en Select Variable pulsamos Cancel para no seleccionar ninguna variable.

De nuevo el la pestaña Arguments

  • en el apartado Program arguments escribimos gvSIG gvSIG/extensiones.
  • en el aparatado VM arguments ponemos -Xmx500M -Djava.library.path=${GVSIG_INSTALL_DIR}/lib. Si estamos en windows, pondremos el valor de la variable entre comillas dobles (ej.:"${GVSIG_INSTALL_DIR}/lib").
  • en el aparatdo Working directory seleccionamos el checkbox Other y ponemos ${GVSIG_INSTALL_DIR}/bin.

En la pestaña Classpath eliminamos la entrada SampleExtension" que eclipse ha incorporado por defecto dentro de *User Entries. Seleccionamos esta User Entries y pulsamos sobre el boton Advanced.... En Advanced Options seleccionamos el checkbox Add Classpath Variables y pulsamos OK. Seleccionamos GVSIG_INSTALL_DIR, pulsamos sobre Extend y seleccionamos ../bin/andami.jar y todos los "jar" que hay dentro de ../bin/lib.

En la pestaña Environment añadimos una variable con el valor ${GVSIG_INSTALL_DIR}/lib.:

  • Si estamos en linux el nombre de la variable será LD_LIBRARY_PATH.
  • Si estamos en Windows el nombre de la variable será Path., y el valor irá entrecomillado

Pinchamos Run y comprobamos que gvSIG arranca.

Configuración del proyecto

Vamos a crear una extensión que escriba en la consola de Eclipse desde el menú de gvSIG.

En el package explorer, sobre nuestro proyecto SampleExtension:

Sobre la carpeta src, botón derecho, New/Package, llamarle org.gvsig.sampleextension. OK

Sobre la carpeta SampleExtension crear una nueva carpeta config y dentro de ésta un nuevo fichero config.xml con este contenido:

<?xml version="1.0" encoding="ISO-8859-1"?>
 <plugin-config>
  <depends plugin-name="com.iver.cit.gvsig" />
  <resourceBundle name="text"/>
  <libraries library-dir="."/>
  <extensions>
        <extension class-name="org.gvsig.sampleextension.EchoExtension"
                description="Echo en la consola"
                active="true"
                priority="1">
           <menu text="Echo" action-command="Echo"/>
        </extension>            
  </extensions>
 </plugin-config>

Para compilar el proyecto necesitamos decirle a Ant dónde está gvSIG.

Para ello, vamos a la barra de menús Window/Preferences y en el cuadro de dialogo Preferences seleccionamos Ant/Runtime pestaña Properties y pulsamos sobre el botón Add Property..., le damos como nombre GVSIG_INSTALL_DIR y como valor utilizamos la variable del mismo nombre que hemos creado durante la configuración de ejecución (pulsando el botón Variables...) y seleccionándola.

Quedará entonces una propiedad así:

GVSIG_INSTALL_DIR = ${GVSIG_INSTALL_DIR}

Ahora creamos sobre SampleExtension un nuevo archivo build.xml con el siguiente contenido:

<project name="Generar SampleExtension en Andami" default="generate-without-source" basedir=".">
   <description>
       Instala SampleExtension en Andami.
   </description>
 <!-- set global properties for this build -->
 <property name="src" location="src"/>
 <property name="build" location="bin"/>
 <property name="dist"  location="dist"/>
 <property name="plugin" value="es.sigrid.stereoscopicgis"/>
 <property name="extension-dir" location="${GVSIG_INSTALL_DIR}/bin/gvSIG/extensiones"/>

 <target name="init">
   <!-- Create the time stamp -->
   <tstamp/>
   <!-- Create the build directory structure used by compile -->
   <mkdir dir="${build}"/>
   <mkdir dir="${dist}"/>
       <!-- Creamos un fichero con el timeStamp para que lo lea el FPanelAbout -->
       <buildnumber/> 
       
 </target>

 <target name="generate-without-source" description="generate the distribution without the source file" >
   <!-- Create the distribution directory -->
   <mkdir dir="${dist}"/>

   <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
   <jar jarfile="${dist}/${plugin}.jar" basedir="${build}"/>
   <copy file="config/config.xml" todir="${dist}"/>
   <copy todir="${dist}">
       <fileset dir="." includes="text*.properties"/>
   </copy>
  
   <move todir="${extension-dir}/${plugin}/">
       <fileset dir="${dist}" includes="**/**"/>
   </move>
 </target>
</project>

Ejecutamos el build y comprobamos que no tiene errores.

Ahora crearemos una nueva clase EchoExtension dentro del package org.gvsig.sampleextension con el siguiente contenido:

package org.gvsig.sampleextension;

import com.iver.andami.plugins.Extension;

public class EchoExtension extends Extension {

       public void execute(String arg0) {
               System.out.println("Echo from SampleExtension");
       }

       public void initialize() {
               // TODO Auto-generated method stub
       }

       public boolean isEnabled() {
               // TODO Auto-generated method stub
               return true;
       }

       public boolean isVisible() {
               // TODO Auto-generated method stub
               return true;
       }
}

Notar que la clase Extensions de la que hereda EchoExtension, se renococe por haber incluido andami.jar en las librerías del proyecto. Para una extensión que utilice más librerías de gvSIG, habría que añadirlas desde las propiedades del proyecto, Libraries y añadirlas usando la variable GVSIG_INSTALL_DIR.

Volvemos a ejecutar el build.xml para que deje la extensión en la carpeta de extensiones de gvsig.

Ejecutamos el proyecto, vemos que aparece una nueva opción de menú Echo/Echo.

Pinchamos y comprobamos que en la consola de Eclipse aparece Echo from SampleExtension.

Si se quiere tener acceso a los fuentes de gvSIG en debug (suponiendo que los tenemos), se pude hacer un attach de los mismos a los jar del proyecto.


Como resumen de las variables que habría que crear para este proceso tenemos:

Window/Preferences/Java/Build Path/Classpath Variables

y

Window/Preferences/Run/Debug/String Substituition la variable (¡Ojo!, son dos variables, una en cada sitio con el mismo nombre):

GVSIG_INSTALL_DIR = Directorio donde esta instalado el gvSIG.

y en:

Window/Preferences/Ant/Runtime/Properties

la propiedad:

GVSIG_INSTALL_DIR = ${GVSIG_INSTALL_DIR}


Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: