Statistics
| Revision:

svn-gvsig-desktop / tags / org.gvsig.desktop-2.0.19 / README.txt @ 44061

History | View | Annotate | Download (8.52 KB)

1 40435 jjdelcerro
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 40462 jjdelcerro
- Si usan maven2 debera configurar la variable MAVEN_OPTS con el valor adecuado
13 40590 jjdelcerro
  (ver "notas de compilacion"), con mvn3 en linux no suele ser necesario.
14 40435 jjdelcerro
15
- Descargar la carpeta org.gvsig.desktop y ejecutar "mvn clean install".
16
17 40462 jjdelcerro
  Esto, por defecto, desplegara en la carpeta target/product la instalacion
18
  de gvSIG.
19 40435 jjdelcerro
20 40590 jjdelcerro
  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 40435 jjdelcerro
Notas de compilacion
24
========================
25
26
MAVEN_OPTS
27
------------
28
29 40462 jjdelcerro
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 40435 jjdelcerro
33
Valores adecuados para la compilacion del proyecto "org.gvsig.desktop" son::
34
35 40476 jldominguez
  -Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m
36 40435 jjdelcerro
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 40476 jldominguez
  export MAVEN_OPTS="-Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m"
41 40435 jjdelcerro
42
43 40550 jjdelcerro
En Windows se establece en esta opci?n o similar
44
(depende de versi?n de Windows):
45 40435 jjdelcerro
46 40476 jldominguez
  Panel de control
47
    > Sistema
48 40550 jjdelcerro
      > Configurac?n avanzada del sistema
49 40476 jldominguez
        > Variables de entorno
50
          > Nueva (en el valor no hace falta comillas)
51
52
53 40435 jjdelcerro
Si esta compilando desde eclipse, precisara tener instalado el plugin maven2e
54
55 40462 jjdelcerro
Usando maven2, cuando no especifica correctamente estos valores pueden
56
aparecerle errores como:
57 40435 jjdelcerro
58
- Error "Compilation failure..."::
59
60
    [ERROR] BUILD FAILURE
61 40462 jjdelcerro
    [INFO] ---------------------------------------------------------------
62 40435 jjdelcerro
    [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 40462 jjdelcerro
    [INFO] ---------------------------------------------------------------
75 40435 jjdelcerro
    [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 40462 jjdelcerro
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 40435 jjdelcerro
88 40462 jjdelcerro
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 40435 jjdelcerro
94 40462 jjdelcerro
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 40435 jjdelcerro
98 40590 jjdelcerro
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 40435 jjdelcerro
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 40462 jjdelcerro
- 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 40435 jjdelcerro
- 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 40462 jjdelcerro
- 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 40435 jjdelcerro
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 40462 jjdelcerro
  De momento he hecho una chapuza y he incrustado DefaultFeatureComparator
215
  dentro de FeatureQueryOrder en el API.
216 40435 jjdelcerro
217 40462 jjdelcerro
- 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 40435 jjdelcerro
221 40462 jjdelcerro
- El proyecto org.gvsig.new.layer.lib.impl tiene una dependencia con
222
  org.gvsig.projection.cresques.ui
223 40435 jjdelcerro
224 40462 jjdelcerro
- 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 40550 jjdelcerro