Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / README.txt @ 40977

History | View | Annotate | Download (8.63 KB)

1

    
2
Como compilar
3
================
4

    
5
Para compilar la aplicacion gvSIG es necesario disponer de:
6

    
7
- Un jdk 1.6 o superior (realmente solo se ha probado con el 1.6 y el 1.7).
8

    
9
- maven instalado en el sistema, recomenado maven 3 (aunque podria compilar 
10
  con maven 2), y que use el jdk 1.6 o superior. 
11

    
12
- Acceso a internet para acceder a los repositorios de maven de la aplicacion.
13

    
14
- Si usan maven2 debera configurar la variable MAVEN_OPTS con el valor adecuado 
15
  (ver "notas de compilacion"), con mvn3 en linux no suele ser necesario.
16

    
17
- Descargar la carpeta org.gvsig.desktop y ejecutar "mvn clean install".
18
  
19
  Esto, por defecto, desplegara en la carpeta target/product la instalacion 
20
  de gvSIG.
21

    
22
  Si se va a compilar todo desde cero, y no se tiene acceso al repositorio de
23
  gvSIG, puede ser necesario compilar antes el projecto org.gvsig.desktop.buildtools
24
  
25
Notas de compilacion
26
========================
27

    
28
MAVEN_OPTS
29
------------
30

    
31
Usando maven 2, para que compile correctamente gvsig precisaremos especificar 
32
en la variable MAVEN_OPTS una serie de valores para reserbar memoria para el 
33
compilador.
34

    
35
Valores adecuados para la compilacion del proyecto "org.gvsig.desktop" son::
36

    
37
  -Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m
38

    
39
Para asignar estos valores en linux puede hacerlo ejecutando la siguiente
40
instruccion en la linea de comandos desde la que vaya a compilar::
41

    
42
  export MAVEN_OPTS="-Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m"
43

    
44

    
45
En Windows se establece en esta opci?n o similar
46
(depende de versi?n de Windows):
47

    
48
  Panel de control
49
    > Sistema
50
      > Configurac?n avanzada del sistema
51
        > Variables de entorno
52
          > Nueva (en el valor no hace falta comillas)
53
        
54

    
55
Si esta compilando desde eclipse, precisara tener instalado el plugin maven2e
56

    
57
Usando maven2, cuando no especifica correctamente estos valores pueden 
58
aparecerle errores como:
59

    
60
- Error "Compilation failure..."::
61

    
62
    [ERROR] BUILD FAILURE
63
    [INFO] ---------------------------------------------------------------
64
    [INFO] Compilation failure
65
    Failure executing javac, but could not parse the error:
66

    
67

    
68
    The system is out of resources.
69
    Consult the following stack trace for details.
70
    java.lang.OutOfMemoryError: PermGen space
71

    
72

    
73
- Error "Error while executing forked tests..."::
74

    
75
    [ERROR] BUILD ERROR
76
    [INFO] ---------------------------------------------------------------
77
    [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
78

    
79
    java.io.IOException: error=12, Cannot allocate memory
80

    
81
gvsig-devel.properties
82
------------------------------
83

    
84
Por defecto al ejecutar "mvn install" sobre org.gvsig.desktop la aplicacion 
85
se desplegara en la carpeta target/product de ese mismo directorio. Una vez
86
ejecutado ese primer comando maven sobre la carpeta org.gvsig.desktop debera 
87
editar el fichero ".gvsig-devel.properties" de la carpeta del usuario si 
88
desea cambiarlo.
89

    
90
Si tiene varios espacios de trabajo y desea que cada uno despliegue sobre 
91
una carpeta distinta puede copiar el fichero de su carpeta de usuario a la 
92
carpeta raiz de org.gvsig.desktop con el nombre "gvsig-devel.properties" y 
93
cambiar en el sobre donde quiere hacer el despliegue, asi puede tener varias
94
"instancias" del desarrollo de gvSIG desplegandose sobre sitios distintos.
95

    
96
Si ejecuta "mvn install" desde algun subproyecto de org.gvsig.desktop tenga 
97
en cuenta que solo se utilizara el fichero ".gvsig-devel.properties" que hay 
98
en su carpeta de usuario y no el del que se encuentre en org.gvsig.desktop.
99

    
100

    
101
Como generar una distribucion de gvSIG
102
==========================================
103

    
104
- Descargaremos el trunk o nos aseguraremos de que estemos actualizados.
105

    
106
- Nos cercioraremos que en nuestro fichero "gvsig-devel.properties", se apunta
107
  al target de lo que nos acabamos de descargar, o simplemente borraremos
108
  el fichero para que se recree con el valor correcto.
109
  
110
- Comprobaremos que el numero de build de 
111

    
112
  org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/buildNumber.properties
113
  
114
  Es el numero de build con el que debe salir la nueva distribucion.
115
  
116
  Si no lo es, ejecutaremos:
117
  
118
    mvn -Dincrease-build-number process-sources
119
  
120
  desde la carpeta org.gvsig.desktop  para incrementarlo y commitaremos los cambios.
121

    
122
- "cd org.gvsig.desktop"
123

    
124
- "mvn clean"
125

    
126
- "mvn install"
127

    
128
  Si la compilacion no ha dado problemas probaremos a ejecutar el gvSIG que hay en la carpeta
129
  org.gvsig.desktop/target/product para cercionarnos de que por lo menos arranca.
130

    
131
- "mvn release:prepare 2>&1 | tee /tmp/mvn-release-prepare.log"
132

    
133
  Esto incrementa en local los numeros de version de todos los proyecos maven y prepara el tag
134
  con los fuentes en el repositorio.
135

    
136
- "cd org.gvsig.desktop.installer"
137

    
138
- "mvn clean"
139

    
140
- "mvn install"
141

    
142
  Con esto se generara el instalable de gvSIG, asi como el paquete (gvspks) con los plugins basicos
143
  de la distribucion, y un zip con estos para incluirlos en el pool del repositorio de plugins
144
  de gvSIG. 
145
  Como ya hemos hecho el "release:prepare" y aun no el "release:perform", los numeros de version de los 
146
  proyectos saldran con las versiones finales (sin SNAPSHOT).
147

    
148
- Subiremos los binarios que haya en org.gvsig.desktop.installer/target a donde se
149
  encuentren los builds de la aplicacion, por ejemplo:
150
  
151
  http://downloads.gvsig.org/download/gvsig-desktop/dists/2.1.0/builds
152
    
153
  Los ficheros a subir, por ejemplo para la 2.1.0 build 2202 serian:
154
  
155
  - gvSIG-desktop-2.1.0-2202-devel-win-x86-online.exe (binarios para windows)
156
  - gvSIG-desktop-2.1.0-2202-devel-lin-x86-online.bin (binarios para linux)
157
  - gvSIG-desktop-2.1.0-2202-devel-all-x86-online.zip (zip multiplataforma)
158
  - gvSIG-desktop-2.1.0-2202-devel-all-all.gvspks (paquetes a usar en la instalacion)
159
  - gvSIG-desktop-2.1.0-2202-devel-all-all-pool.zip (paquetes para incluir en el pool)
160

    
161
- Si despues de ejecutar el "release:prepare" y antes de llegar aqui se produce algun error,
162
  ejecutaremos un "mvn release:rollback" para deshacer los cambios.
163
  
164
  A pesar de ello, se habra quedado creado el tag en el SVN, que podemos ir y eliminar a mano.
165
  
166
- "mvn release:perform 2>&1 | tee /tmp/mvn-release-perform.log"
167

    
168
  Si todo habia ido bien, al ejecutar esto, se subiran los artefactos maven de la distribucion al
169
  repositorio de maven, y se crearan los sites de todos los proyectos para esta version.
170
  
171
  Los artefactos con la nueva version en SNAPSHOT no se habran compilado, ni instalado o
172
  desplegado. Si consideramos oportuno disponer en el repo de maven de los
173
  nuevos artefactos en SNAPSHOT deberemos hacerlo a mano tras terminar todo el proceso.
174

    
175
Con esto se deberia haber completado la generacion de la distribucion. Ahora faltaria 
176
actualizar el repositorio de plugins de gvSIG.
177

    
178

    
179
Notas pendientes
180
=================
181

    
182
Puede ser interesante mirar el plugin 
183

    
184
http://mojo.codehaus.org/versions-maven-plugin/
185

    
186

    
187
A tener en cuenta
188
--------------------
189

    
190
- Andami se lleva ahora muchas mas dependencias que antes, entre otras el 
191
  api de la libreria de proyecciones (se lo lleva org.gvsig.ui) pero como 
192
  no se lleva una implementacion peta en la inicializacion. De momento he 
193
  puesto un exclude de org.gvsig.projection en el assembly.
194

    
195
- Los snappers que hay en appgvsig dependen de jts.
196
  Habria que ver de cambiar su implementacion para que usen el API
197
  de la libreria de geometrias y eliminar la dependencia de compilacion
198
  de appgvsig hacia jts del pom.
199

    
200
  - TangentPointSnapper
201
  - PixelSnapper
202
  - MediumPointSnapper
203
  - PerpendicularPointSnapper
204
  - NearestPointSnapper
205

    
206
- La clase Line2DOffset en org.gvsig.symbology.lib.impl hace uso intensivo 
207
  de JTS. Ver si es viable crear una operacion sobre la geometria que haga 
208
  lo que hace esa clase.
209

    
210
- En org.gvsig.symbology.swing se hace uso de funcionalidades de andami.
211

    
212
- Hay que repasar la asignacion de iconos a las capas. Ver la extension 
213
  de extDWG, pero puede afectar a otras.
214

    
215
- Ver que pasa con las clases de DAL FeatureQueryOrder y DefaultFeatureComparator.
216
  De momento he hecho una chapuza y he incrustado DefaultFeatureComparator 
217
  dentro de FeatureQueryOrder en el API.
218

    
219
- En la libreria de geometrias, la operacion Equals y el metodo equals de 
220
  Geometry hacen cosas distintas. En mapcontext, EqualsGeometryEvaluator, 
221
  he sustituido la llamada a la operacion por el metodo.
222

    
223
- El proyecto org.gvsig.new.layer.lib.impl tiene una dependencia con
224
  org.gvsig.projection.cresques.ui
225

    
226
- En PluginServices, en el metodo getPluginHomeFolder, habria que hacer que 
227
  si es nuevo copie los contenidos de los AlternativeNames a el. De esta 
228
  forma seguira funcionanado con la configuracion que tuviese el usuario 
229
  aunque se renombre un plugin.
230

    
231