Statistics
| Revision:

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

History | View | Annotate | Download (8.63 KB)

1 40435 jjdelcerro
2
Como compilar
3
================
4
5
Para compilar la aplicacion gvSIG es necesario disponer de:
6
7 40977 jjdelcerro
- Un jdk 1.6 o superior (realmente solo se ha probado con el 1.6 y el 1.7).
8
9 40435 jjdelcerro
- maven instalado en el sistema, recomenado maven 3 (aunque podria compilar
10 40977 jjdelcerro
  con maven 2), y que use el jdk 1.6 o superior.
11 40435 jjdelcerro
12
- Acceso a internet para acceder a los repositorios de maven de la aplicacion.
13
14 40462 jjdelcerro
- Si usan maven2 debera configurar la variable MAVEN_OPTS con el valor adecuado
15 40590 jjdelcerro
  (ver "notas de compilacion"), con mvn3 en linux no suele ser necesario.
16 40435 jjdelcerro
17
- Descargar la carpeta org.gvsig.desktop y ejecutar "mvn clean install".
18
19 40462 jjdelcerro
  Esto, por defecto, desplegara en la carpeta target/product la instalacion
20
  de gvSIG.
21 40435 jjdelcerro
22 40590 jjdelcerro
  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 40435 jjdelcerro
Notas de compilacion
26
========================
27
28
MAVEN_OPTS
29
------------
30
31 40462 jjdelcerro
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 40435 jjdelcerro
35
Valores adecuados para la compilacion del proyecto "org.gvsig.desktop" son::
36
37 40476 jldominguez
  -Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m
38 40435 jjdelcerro
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 40476 jldominguez
  export MAVEN_OPTS="-Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m"
43 40435 jjdelcerro
44
45 40550 jjdelcerro
En Windows se establece en esta opci?n o similar
46
(depende de versi?n de Windows):
47 40435 jjdelcerro
48 40476 jldominguez
  Panel de control
49
    > Sistema
50 40550 jjdelcerro
      > Configurac?n avanzada del sistema
51 40476 jldominguez
        > Variables de entorno
52
          > Nueva (en el valor no hace falta comillas)
53
54
55 40435 jjdelcerro
Si esta compilando desde eclipse, precisara tener instalado el plugin maven2e
56
57 40462 jjdelcerro
Usando maven2, cuando no especifica correctamente estos valores pueden
58
aparecerle errores como:
59 40435 jjdelcerro
60
- Error "Compilation failure..."::
61
62
    [ERROR] BUILD FAILURE
63 40462 jjdelcerro
    [INFO] ---------------------------------------------------------------
64 40435 jjdelcerro
    [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 40462 jjdelcerro
    [INFO] ---------------------------------------------------------------
77 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
78
79
    java.io.IOException: error=12, Cannot allocate memory
80
81
gvsig-devel.properties
82
------------------------------
83
84 40462 jjdelcerro
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 40435 jjdelcerro
90 40462 jjdelcerro
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 40435 jjdelcerro
96 40462 jjdelcerro
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 40435 jjdelcerro
100 40590 jjdelcerro
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 40435 jjdelcerro
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 40462 jjdelcerro
- 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 40435 jjdelcerro
- 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 40462 jjdelcerro
- 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 40435 jjdelcerro
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 40462 jjdelcerro
  De momento he hecho una chapuza y he incrustado DefaultFeatureComparator
217
  dentro de FeatureQueryOrder en el API.
218 40435 jjdelcerro
219 40462 jjdelcerro
- 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 40435 jjdelcerro
223 40462 jjdelcerro
- El proyecto org.gvsig.new.layer.lib.impl tiene una dependencia con
224
  org.gvsig.projection.cresques.ui
225 40435 jjdelcerro
226 40462 jjdelcerro
- 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 40550 jjdelcerro