Creación de un proyecto a partir del arquetipo AMAP
El Gobierno de Cantabria pone a disposición de los proveedores un repositorio corporativo de Maven. Este repositorio provee de un catálogo de arquetipos entre los que se encuentra el básico para la creación de cualquier aplicación JEE estándar AMAP.
Entre las características más relevantes del arquetipo se encuentran:
- SSO : Sistema de autenticación externalizada a la aplicación (más seguro), que permite un dominio de acceso compartido para aplicaciones con el mismo nivel de seguridad. Informa a la aplicación de los datos (y roles) del usuario. El uso del SSO es obligatorio para nuevas aplicaciones que requieran de usuarios corporativos.
- Propiedades externalizadas : Los empaquetados son compatibles entre diferentes entornos de forma que las propiedades específicas del entorno se encontrarán siempre fuera del mismo.
Para crear un proyecto nuevo en base a este arquetipo se han de seguir los siguientes pasos:
1 Incluir el repositorio maven del gobierno de cantabria en su fichero fichero settings.xml en el raiz de su repositorio maven ( normalmente $HOME\.m2) o bien en el de settings.xml global de la instalación de maven
<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<localRepository>${user.home}/.m2/amap-3.0-repository</localRepository>
<profiles>
<profile>
<properties>
<archetypeCatalog>https://snexus01.intranet.gobcantabria.es/repository/amap-3.0</archetypeCatalog>
</properties>
<id>amap-profile</id>
<pluginRepositories>
<pluginRepository>
<id>amap-plugins</id>
<name>amapPlugins</name>
<url>https://snexus01.intranet.gobcantabria.es/repository/amap-plugins</url>
<snapshots />
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<mirrors>
<mirror>
<id>central-mirror</id>
<name>repositorio amap</name>
<url>https://snexus01.intranet.gobcantabria.es/repository/amap-3.0</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>internal-repository</id>
<name>repositorio vacío</name>
<url>https://snexus01.intranet.gobcantabria.es/repository/external-empty-mirror</url>
<mirrorOf>*,!central,!amap-plugins</mirrorOf>
</mirror>
</mirrors>
<activeProfiles>
<activeProfile>amap-profile</activeProfile>
</activeProfiles>
<servers>
<server>
<id>nexus3</id>
<username>${server.username}</username>
<password>${server.password}</password>
</server>
</servers>
</settings>
Nota 1: Se ha indicado un directorio por defecto diferente denominado amap-3.0-repository esto es para facilitar el desarrollo separando las librerías del framework de las del resto del equipo de desarrollo.
2 Invocar el comando de creación de aplicaciones a partir de arquetipos en el directorio (prompt) donde se quiera crear la aplicación:
$> mvn archetype:generate
Maven mostrará una lista de arquetipos y solicitará al usuario indicar el número de arquetipo seleccionado:
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:2.3:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:2.3:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO]
[INFO]
[INFO] --- maven-archetype-plugin:2.3:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Interactive mode
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: https://snexus01.intranet.gobcantabria.es:8443/repository/amap-3.0 -> es.gobcantabria.arquetipos:amap-angular-front-archetype-basic (AMAP Arquetipo - Angular Front)
2: https://snexus01.intranet.gobcantabria.es:8443/repository/amap-3.0 -> es.gobcantabria.arquetipos:amap-spring-back-archetype-basic (AMAP Arquetipo - Spring Back)
3: https://snexus01.intranet.gobcantabria.es:8443/repository/amap-3.0 -> es.gobcantabria.arquetipos:amap-springmvc-archetype-basic (Arquetipo AMAP - Spring MVC)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): :
Se debe seleccionar el identificado como amap-spring-back-archetype-basic. En este caso, habrá que introducir por consola el número 'XXX', que corresponde con el arquetipo deseado.
Nota: Si no se encuentra el arquetipo amap-springmvc-archetype-basic, habrá que añadir el archetype-catalog.xml, que se encuentra en https://snexus01.intranet.gobcantabria.es:8443/repository/amap-3.0/archetype-catalog.xml a su carpeta m2 de local.
'XXX': https://snexus01.intranet.gobcantabria.es:8443/repository/amap-3.0 -> es.gobcantabria.arquetipos:amap-spring-back-archetype-basic (AMAP Arquetipo - Spring Back)
De modo interactivo, la herramienta nos pedirá una serie de datos necesarios para la creación del arquetipo o mostrará alguna propiedad definida por defecto. Dichos datos se deberán cumplimentar siguiendo las normas de codificación Maven
- groupId: Grupo donde se incluirá la aplicación (a efectos de Maven). Por defecto será es.gobcantabria.aplicaciones.
- artifactId: Identificador de la aplicación (rec, sogi...). Importante es recomendable elegir un nombre adecuado, no muy extenso sin caracteres raros o extraños.
- version: Versión. Por defecto será 1.0.0
- package: Paquete java del que penderán las clases de la aplicación. Por defecto, siguiendo las normas de codificación JEE será es.gobcantabria.aplicaciones.<artifactId>
- descripcion: Breve descripción de la aplicación.
- nombreProperties: Nombre de los ficheros de properties, se aconseja no cambiar este valor
- guionNombreProperties: Nombre de los ficheros de properties con un guion al comienzo, se recomienda no cambiar este valor
- nombre_descriptivo: Nombre largo de la aplicación. P.e: Registro Electrónico Común
Nota: Las aplicaciones del back creadas con el arquetipo 3.0 deben contener -back en el nombre del artifactId
[INFO] Using property: groupId = es.gobcantabria.aplicaciones
Define value for property 'artifactId': : miapp-back
[INFO] Using property: version = 1.0.0
jun 07, 2023 10:25:55 AM org.apache.velocity.runtime.log.JdkLogChute log
INFORMACIËN: FileResourceLoader : adding path '.'
Define value for property 'package': es.gobcantabria.aplicaciones.miapp: :
Define value for property 'descripcion': : miapp-back descripcion
Define value for property 'guionNombreProperties': _miapp-back: :
Define value for property 'nombreProperties': miapp-back: :
Define value for property 'nombre_descriptivo': : miapp-back
Confirm properties configuration:
groupId: es.gobcantabria.aplicaciones
artifactId: miapp-back
version: 1.0.0
package: es.gobcantabria.aplicaciones.miapp
descripcion: miapp-back descripcion
guionNombreProperties: _miapp-back
nombreProperties: miapp-back
nombre_descriptivo: miapp-back
Y: :
Por último el asistente nos pedirá confirmación y creará la aplicación en el mismo directorio donde tenemos el prompt.
El siguiente paso es abrir el IDE correspondiente e importar la aplicación creada con el arquetipo maven:
- Se ha de importar como una aplicación maven: opcionalmente se podrá actualizar el proyecto como proyecto maven para refrescar las librerias pendientes de descargar.
- establecer el acceso a base de datos : para este punto viene configurado por defecto el perfil local con una base de datos en memoria o bien mantener el perfil de gobierno, configurar un jndi en servidor de aplicaciones y vincularlo a una base de datos en la que se han de crear las tablas y datos en dicha base de datos, en la carpeta "scriptsIniciales" existen dos ficheros dataOracle.sql y schemaOracle.sql con la generación para Oracle. Independientemente de la opción elegida, cada vez que se entregue una aplicación generada con el arquetipo deberá estar activado únicamente el perfil de gobierno (o su funcionamiento ser idéntico al de esta situación).En la configuración de perfil de gobierno se utiliza como mecanismo de acceso a las aplicaciones el SSO definido en los entornos corporativos. Los usuarios estarán vinculados a un rol de la aplicación y que estará definido en ella qué funcionalidades son las permitidas los usuarios de este rol (por defecto existen uno de administrador y otro de usuario).
- Añadirla al servidor JBoss o Tomcat que se tenga configurado en dicho IDE.
- Despues se ha de arrancar dicho servidor y probar la ejecución de la aplicación web. Para lo cual habrá que poner en general en la barra de direcciones del navegador que se use la dirección-URL que se haya configurado. (En general http://localhost:8080/xxxxxx o https://localhost:8443/xxxxxx siendo xxxxxx el nombre de la aplicación generada).
Se utiliza la librería AMAP-BASE para establecer la configuración por defecto de la aplicación.
El codigo fuente de dicha libreria está disponible en el repositorio corporativo NEXUS
NOTA: Es importante configurar el servidor apuntando a los ficheros properties de la aplicación, asi como el ruta data:
Ya que sino el despliegue y la ejecución de la aplicación dará errores, y no se llevará acabo correctamente.
Véase la información al respecto sobre ficheros properties en la sección de AccesoPropiedadesSistema
NOTA:
El fichero pom.xml contiene dos perfiles de maven env-local y env-gob que se encargan tanto de añadir sus correspondientes ficheros de
configuración del directorio "src/main/config/" como de asignar una property en maven usada en este caso para definir si algunas
dependencias son compile, en el caso de que el perfil sea env-local y provided en caso de que sea env-gob.
En caso de ser provided cogerá las dependencias suministrados por el servidor jboss.