Aplicaciones
Existe un script para la generación de aplicaciones de manera sencilla. Esta documentación es útil para crear aplicaciones con necesidades específicas que el script no cubre o para entender el funcionamiento de las aplicaciones del repositorio de Geoladris.
Estructura de una aplicación
Una aplicación Geoladris contiene los siguientes ficheros/directorios:
-
package.json: Fichero de configuración de yarn. Aquí se deben incluir los plugins cliente como dependencias:"dependencies": { "@csgeoladris/ui": "csgis/geoladris-ui#master", "@geoladris/core": "geoladris/core#master", "@geoladris/base": "file:../../plugins/base", ... }
Además se debe incluir un script para el empaquetado de recursos cliente:
"scripts": { "build": "gl-build-app.js && r.js -o .requirejs-build.js" }
-
pom.xml: Fichero de configuración de Maven. Aquí se deben incluir los plugins servidor como dependencias:<dependencies> ... <dependency> <groupId>org.fao.unredd</groupId> <artifactId>layers-editor</artifactId> <version>${plugins.version}</version> </dependency> ... </dependencies>
También se debe incluir el plugin frontend-maven-plugin para ejecutar el script de
builddeyarn:<build> <plugins> <plugin> <groupId>com.github.eirslett</groupId> <artifactId>frontend-maven-plugin</artifactId> <version>1.4</version> <executions> <execution> <id>install-node-and-yarn</id> <goals> <goal>install-node-and-yarn</goal> </goals> <configuration> <nodeVersion>${node.version}</nodeVersion> <yarnVersion>${yarn.version}</yarnVersion> </configuration> </execution> <execution> <id>yarn install</id> <goals> <goal>yarn</goal> </goals> <configuration> <arguments>install</arguments> </configuration> </execution> <execution> <id>yarn-build</id> <goals> <goal>yarn</goal> </goals> <phase>prepare-package</phase> <configuration> <arguments>run build</arguments> </configuration> </execution> </executions> </plugin> </plugins> </build>
-
yarn.lock: Siempre se deben incluir estos ficheros en el repositorio. src/main/webapp/META-INF/context.xml: Fichero de configuración de Tomcat.src/main/webapp/WEB-INF/web.xml: Descriptor de aplicación.src/main/webapp/WEB-INF/default_config: Directorio de configuración por defecto. Opcional.
Empaquetar
El core de Geoladris se encarga de empaquetar todos los recursos tanto Java (servlets, filtros, listeners,...) como JavaScript (copiar módulos, estilos, dependencias, etc. a src/main/webapp para empaquetarlos dentro del war y servirlos con Tomcat) y minificar los recursos estáticos.
Los plugins JavaScript se gestionan con herramientas de JavaScript. El flujo de trabajo es:
- Incluir plugins en
dependenciesdentro delpackage.json. yarn installpara gestionar todas las dependencias.gl-build-app.js. Es un script propio decoreque:- Copia los plugins definidos en la opción
dependenciesdelpackage.jsondentro desrc/main/webapp; también copia las dependencias (*.jsy*.css). - Genera el fichero
app.min.csscon todos los estilos (de menos a más prioridad: dependencias,srcycss). - Genera el fichero
main.jsde RequireJS que se sirve en la aplicación final (solo condebug=true). - Genera el fichero
index.html. - Genera un fichero
.requirejs-build.jspara minificar módulos RequireJS, teniendo en cuenta la configuración derequirejsen losgeoladris.jsonde los plugins.
- Copia los plugins definidos en la opción
r.js -o build.js. Generasrc/main/webapp/app.min.jscon la minificación de los recursos JavaScript a partir del.requirejs-build.jsgenerado porgl-build-app.js.
Los plugins Java se gestionan simplemente incluyéndolos como dependencias en el pom.xml.
El build de plugins JavaScript se incluye como parte del build de Maven con un plugin. Por tanto, basta con hacer mvn package para empaquetarlo todo.
Servir
Una vez desplegada la aplicación .war en Tomcat, el core de Geoladris también se encarga de servir todos los recursos estáticos (plugins empaquetados en el war, plugins en el directorio de configuración, ficheros estáticos en el directorio de configuración,...) y dinámicos (config.js, ...). Son los siguientes:
Recursos estáticos gestionados directamente por Tomcat (por estar en src/main/webapp):
src/main/webapp/app.min.jssrc/main/webapp/app.min.csssrc/main/webapp/index.htmlsrc/main/webapp/*.jssrc/main/webapp/geoladris/*
Recursos estáticos fuera del war. Configurado automáticamente para Tomcat 8.x y 9.x:
<config_dir>/plugins/. Bajo el path/plugins/*.<config_dir>/static/. Bajo el path/static/*. Inhabilitasrc/main/webapp/static.
config.js (con un servlet), que es dinámico porque puede depender, por ejemplo, del usuario.