svn-gvsig-desktop / tags / org.gvsig.desktop-2.0.34 / README.txt @ 42346
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 |