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