====== Personalización de Aplicaciones para Otros Clientes - Guía General ====== Para poder personalizar una aplicación para diferentes clientes, entorno y servidor, vamos a utilizar los perfiles (////) de //Maven//. Como ya se empezó a indicar en la guía técnica la guía técnica [[fdw2.0:fundeweb2.0:gt:gt-jbossas7:gt-configurar-proyecto-para-jbossas7|Configurar el Proyecto para JBoss AS 7 para FundeWeb 2.0]] ([[fdw:fundeweb:gt:gt-jbossas7:gt-configurar-proyecto-para-jbossas7|Configurar el Proyecto para JBoss AS 7 para FundeWeb 1.5]]). La base de estas modificaciones es FundeWeb 2.0.0, sino estas en esta versión es recomendable actualizarse. Realizar previamente las siguientes guías técnicas\\ * [[:fdw2.0:fundeweb2.0:gt:actualizacion-sistema-autenticación|Actualización del Sistema de Autenticación]], **SOLO** para aplicaciones FundeWeb 1.5 y FundeWeb 2.0 creadas con arquetipos anteriores al 0.0.7. * [[:fdw2.0:fundeweb2.0:gt:gt-eclipse:gt-instalar-m2e-maven-fundeweb-build-helper-plugin|Instalar el plugin: M2E connector for maven-fundeweb-build-helper-plugin]] * [[fdw2.0:fundeweb2.0:gt:gt-eclipse:gt-instalar-m2e-build-helper-maven-plugin|Instalar el plugin: M2E connector for build-helper-maven-plugin]] * [[fdw2.0:fundeweb2.0:gt:gt-jbossas7:gt-configurar-proyecto-para-jbossas7|Configurar el Proyecto para JBoss AS 7]] para aplicaciones FundeWeb 2.0. * [[fdw:fundeweb:gt:gt-jbossas7:gt-configurar-proyecto-para-jbossas7|Configurar el proyecto para trabajar con JBoss AS 7]] para aplicaciones FundeWeb 1.5. Con los perfiles, podemos añadir nuevos ficheros para filtrar (////), directorios de código fuente, recursos (////) y directorios con contenido para el módulo WEB (////). ===== Añadiendo un Perfil para un Cliente ===== Vamos a ver este punto, utilizando como ejemplo la aplicación //Portafirmas// (actualmente es FundeWeb 1.5, para aplicaciones FundeWeb 2.0, todo estaría en el módulo WEB), donde: * Vamos a añadir nuevas carpetas de código fuente y recursos para el módulo EJB. * Vamos a añadir nuevas carpetas de recursos y //webapp// para el módulo WEB. === Módulo EJB === Vamos a añadir la definición del perfil //umu// en el módulo EJB: * Tenemos la carpeta //umu// en la ruta //src/main/perfiles//. * Tenemos las carpetas //filters//, //java// y //resources// dentro de la carpeta //umu//. * Tenemos el fichero //filtro-umu.properties// dentro de la carpeta //filters//. * En el fichero POM del módulo EJB, añadimos el siguiente perfil en la etiqueta ////: ... ... umu true src/main/perfiles/umu ${umu.profile.folder}/filters/filtro-umu.properties org.codehaus.mojo build-helper-maven-plugin add-umu-sources generate-sources add-source ${umu.profile.folder}/java add-umu-resources generate-resources add-resource ${umu.profile.folder}/resources config/servicios/servicios.properties true ... Vamos a describir el perfil: * El perfil se activa (////) por defecto si no se especifican estos al lanzar las tareas //Maven//. * La propiedad //umu.profile.folder// contiene la ruta relativa a la carpeta del perfil, a partir del inicio del módulo. * Añadimos los filtros (////) que necesitemos. En principio esta disponible el fichero general del perfil //filtro-umu.properties//. Pero podemos definir diferentes tipos de filtros (que están comentados, descomentar para poder utilizar el deseado): * Relacionados con el entorno de ejecución: //filtro-umu-${entorno}.properties// * Relacionados con el servidor: //filtro-umu-${servidor}.properties// * Relacionados con el entorno de ejecución y el servidor: //filtro-umu-${servidor}-${entorno}.properties// Más información sobre filtros en [[fdw2.0:fundeweb2.0:gt:customize_application#aclaraciones|Aclaraciones - Filtrado]]. * Para añadir nuevas carpetas de código fuente y recursos, tenemos que utilizar el plugin //build-helper-maven-plugin//. Como vemos, tiene dos elementos ////: * Uno para añadir el código fuente con // add-umu-sources// (para cada cliente generamos el id con la plantilla //add-_cliente_-sources//, donde //_cliente_// se sustituye por el //// del perfil). * Otro para añadir la carpeta de recursos con // add-umu-resources// (para cada cliente generamos el id con la plantilla //add-_cliente_-resources//, donde //_cliente_// se sustituye por el //// del perfil). No es obligatorio crear las carpetas de código fuente y recursos, solo hay que crearlas cuando sean necesarias, pero si se especifican en el perfil, hay que crearlas. Dentro de las carpetas de código fuente, podemos tener las clases Java necesarias para personalizar la aplicación con respecto al cliente. Dentro de las carpetas de recursos, podemos tener, mensajes y ficheros de configuración, necesarios para personalizar la aplicación con respecto al cliente. === Módulo WEB === Vamos a añadir la definición del perfil //umu// en el módulo WEB: * Tenemos la carpeta //umu// en la ruta //src/main/perfiles//. * Tenemos las carpetas //filters//, //resources// y //webapp// dentro de la carpeta //umu//. * Tenemos el fichero //filtro-umu.properties// dentro de la carpeta //filters//. * En el fichero POM del módulo WEB, añadimos el siguiente perfil en la etiqueta ////: ... ... umu true src/main/perfiles/umu ${umu.profile.folder}/filters/filtro-umu.properties es.um.atica.fundeweb.maven.plugins maven-fundeweb-build-helper-plugin add-umu-webResources generate-resources add-webResource ${umu.profile.folder}/webapp false ${umu.profile.folder}/webapp prueba-filtro.html true org.codehaus.mojo build-helper-maven-plugin add-umu-resource generate-resources add-resource ${umu.profile.folder}/resources ... Vamos a describir el perfil: * El perfil se activa (////) por defecto si no se especifican estos al lanzar las tareas //Maven//. * La propiedad //umu.profile.folder// contiene la ruta relativa a la carpeta del perfil, a partir del inicio del módulo. * Añadimos los filtros (////) que necesitemos. En principio esta disponible el fichero general del perfil //filtro-umu.properties//. Pero podemos definir diferentes tipos de filtros (que están comentados, descomentar para poder utilizar el deseado): * Relacionados con el entorno de ejecución: //filtro-umu-${entorno}.properties// * Relacionados con el servidor: //filtro-umu-${servidor}.properties// * Relacionados con el entorno de ejecución y el servidor: //filtro-umu-${servidor}-${entorno}.properties// Más información sobre filtros en [[fdw2.0:fundeweb2.0:gt:customize_application#aclaraciones|Aclaraciones - Filtrado]]. * Para añadir nuevas carpetas de recursos tenemos que utilizar el plugin //build-helper-maven-plugin//. Como vemos, tiene definido un elemento //// para añadir la carpeta de recursos con // add-umu-resources// (para cada cliente generamos el id con la plantilla //add-_cliente_-resources//, donde //_cliente_// se sustituye por el //// del perfil). * Para añadir nuevas carpetas //webapp//, tenemos que utilizar el plugin //maven-fundeweb-build-helper-plugin//. Como vemos, tiene un elemento //// para añadir el código fuente con // add-umu-webResources// (para cada cliente generamos el id con la plantilla //add-_cliente_-webResources//, donde //_cliente_// se sustituye por el //// del perfil). No es obligatorio crear las carpetas de recursos y //webapp//, solo hay que crearlas cuando sean necesarias, pero si se especifican en el perfil, hay que crearlas. Dentro de las carpetas de recursos, podemos tener, mensajes y ficheros de configuración, necesarios para personalizar la aplicación con respecto al cliente. Dentro de las carpetas //webapp//, podemos tener los ficheros Javascript, CSS, imagenes, etc., necesarios para personalizar la aplicación con respecto al cliente. Recordaros que para aplicaciones **FundeWeb 2.0**, toda la configuración estaría dentro de un único perfil en el **módulo WEB**. También es muy util recordaros como se pueden [[https://wiki.um.es/wikis/programador/doku.php?id=fdw2.0:fundeweb2.0:gt:maven-filtrar-codigo-java|Filtrar el Código de Clases JAVA Maven]]. ==== Aclaraciones ==== === Filtrado === Los valores definidos en los ficheros de filtrado, se aplican a todos los ficheros de los //'s// que indican que se filtran (//// con valor a //true//), no solo los especificados en un ////. El ////, solo añade nuevos ficheros a los ya definidos. Los ficheros de filtrado se aplican en el siguiente orden: * Los primeros en aplicarse, son los definidos en // dentro de la etiqueta // general del POM (no definida en //). Estos a su vez, se ordenan según el orden de definición del //. * Después, según el orden de definición de los perfiles al lanzar las tareas //Maven// o al especificarlo en la configuración de //Maven// para //Eclipse//. El orden general en //FundeWeb// es el siguiente: perfil del JDK, perfil del entorno, perfil del servidor, perfil del cliente y cluster (este ultimo no es necesario en local y lo calcula directamente la tarea ANT). * El orden dentro de un perfil, se establece según el orden de definición de los //. == Ficheros de Filtrado definidos en un Perfil == Como ejemplo, en los perfiles de //weblogic// y //jbossas7// tenemos definido un fichero de propiedades general del servidor (//filtro-.properties//). Además, podemos definir ficheros de propiedades específicos para el entorno (que en principio están comentados: //filtro--${entorno}.properties//), en la configuración siempre tiene que ir detrás del fichero de propiedades general del servidor. Si descomentamos algún //filtro--${entorno}.properties//, como trabajamos con 4 entornos, tenemos que tener un fichero por entorno, veamos un ejemplo para weblogic: //filtro-weblogic-local.properties//, //filtro-weblogic-desarrollo.properties//, //filtro-weblogic-preproduccion.properties// y //filtro-weblogic-produccion.properties//. Los ficheros tienen que existir, aunque estén vacíos. Si falta alguno de estos ficheros, entonces la tarea Maven fallara para dicho entorno. El orden de aplicación de los ficheros de filtrado (los definidos en etiquetas //, se establece según el orden de definición, y permiten sobrescribir el valor de propiedades, tomando como valor, la última definición encontrada para dicha propiedad, según el orden de defunción de los filtros. ---- --- //[[juanmiguel.bernal@ticarum.es|JUAN MIGUEL BERNAL GONZALEZ]] 2016/11/08 13:10//