Statistics
| Revision:

svn-gvsig-desktop / tags / org.gvsig.desktop-2.0.16 / README.txt @ 44118

History | View | Annotate | Download (8.52 KB)

1

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

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

    
7
- maven instalado en el sistema, recomenado maven 3 (aunque podria compilar 
8
  con maven 2). 
9

    
10
- Acceso a internet para acceder a los repositorios de maven de la aplicacion.
11

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

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

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

    
26
MAVEN_OPTS
27
------------
28

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

    
33
Valores adecuados para la compilacion del proyecto "org.gvsig.desktop" son::
34

    
35
  -Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m
36

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

    
40
  export MAVEN_OPTS="-Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m"
41

    
42

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

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

    
53
Si esta compilando desde eclipse, precisara tener instalado el plugin maven2e
54

    
55
Usando maven2, cuando no especifica correctamente estos valores pueden 
56
aparecerle errores como:
57

    
58
- Error "Compilation failure..."::
59

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

    
65

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

    
70

    
71
- Error "Error while executing forked tests..."::
72

    
73
    [ERROR] BUILD ERROR
74
    [INFO] ---------------------------------------------------------------
75
    [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
76

    
77
    java.io.IOException: error=12, Cannot allocate memory
78

    
79
gvsig-devel.properties
80
------------------------------
81

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

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

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

    
98

    
99
Como generar una distribucion de gvSIG
100
==========================================
101

    
102
- Descargaremos el trunk o nos aseguraremos de que estemos actualizados.
103

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

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

    
120
- "cd org.gvsig.desktop"
121

    
122
- "mvn clean"
123

    
124
- "mvn install"
125

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

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

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

    
134
- "cd org.gvsig.desktop.installer"
135

    
136
- "mvn clean"
137

    
138
- "mvn install"
139

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

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

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

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

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

    
176

    
177
Notas pendientes
178
=================
179

    
180
Puede ser interesante mirar el plugin 
181

    
182
http://mojo.codehaus.org/versions-maven-plugin/
183

    
184

    
185
A tener en cuenta
186
--------------------
187

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

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

    
198
  - TangentPointSnapper
199
  - PixelSnapper
200
  - MediumPointSnapper
201
  - PerpendicularPointSnapper
202
  - NearestPointSnapper
203

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

    
208
- En org.gvsig.symbology.swing se hace uso de funcionalidades de andami.
209

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

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

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

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

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

    
229