Normativa_maven

Anuncio
Región de Murcia
Consejería de Educación, Universidades y Empleo
D.G. de Infraestructura y Promoción Educativo
Servicio de Gestión Informática
Avda. de La Fama, 15
30006 MURCIA
www.carm.es/educacion
Guía para la estructuración de proyectos maven
GUÍA PARA LA ESTRUCTURACIÓN DE PROYECTOS MAVEN _________________________ 1
INTRODUCCIÓN ____________________________________________________________________ 1
ESTRUCTURA DE UN PROYECTO JAVA ___________________________________________________ 1
VERSIONADO ______________________________________________________________________ 3
INTEGRACIÓN CONTINUA _____________________________________________________________ 3
PUBLICACIÓN EN ARTIFACTORY _______________________________________________________ 3
DESPLIGUE DE LA APLICACIÓN EN UN SERVIDOR ___________________________________________ 3
Introducción
Este documento describe la estructura general de una aplicación Java integrado en el
marco de desarrollo de aplicaciones y con el framework de desarrollo.
Estructura de un proyecto Java
Un proyecto será un conjunto de módulos. Todo proyecto debe partir obligatoriamente
de un arquetipo de tipo proyecto y el desarrollo de cualquier módulo de un proyecto
serán submódulos de éste, que obligatoriamente se deben hacer partiendo del arquetipo
correspondiente al módulo en cuestión.
Nombre del
arquetipo
war.archetype
jar.archetype
ws.archetype
prj.archetype


Descripción
Genera un proyecto Maven war
que integra JSF, Spring y la capa
de servicios web.
Genera un proyecto Maven jar
básico.
Genera un peyecto Maven war
que viene preparado para la
implementación de un servicio
web.
Genera el proyecto de partida
para cualquier aplicación. Todo
módulo del proyecto deberá ser
submódulo de éste.
Tipo de módulo
Módulo web (aplicación
web)
Módulo jar (librería)
Módulo servicio web
Proyecto
El nombre del proyecto será el nombre de la apliación. (ej: libro).
Las aplicaciones se dividirán principalmente en dos partes: el back y el front. Los
módulos residen dentro del proyecto y se nombran xxx-back y xxx-front (ej: libroback, libro-front).
o Dentro del Back se encontrará la definición de la lógica de negocio y su
implementación como la definición de los servicios web/rest.
o La estructura del modulo back se descompone en: dao, restful, ws, web. No
tiene que estar todos los tipos de proyectos. Cada subproyecto añade el sufijo
del tipo de módulo (ej: libro-back-dao, libro-back-restful…)
Ubicación CVS: interno/recursos/documentacion/guia_desarrollo.doc
Pagina 1 de 3
Región de Murcia
Consejería de Educación, Universidades y Empleo
D.G. de Infraestructura y Promoción Educativo
Servicio de Gestión Informática
Avda. de La Fama, 15
30006 MURCIA
www.carm.es/educacion

El módulo ‘dao’ contendrá la definición de las interfaces dao, los
pojos, su implementación y los mocks. Para cada servicio ‘xxx’ debe
existir un paquete ‘es.carm.edu.app.dao.xxx’ que contenga:
 La interfaz dao: xxxServiceDao.java
 El pojo: xxx.java
 El mock: xxxServiceDaoMock.java
 La implementación del servicio: xxxServiceDaoImpl.java
 Mappers ibatis: xxxMapper.java
 El módulo ‘restful’ contendrá la especificación de un servicio Rest,
las rutas, los métodos (GET,POST, PUT y DELETE) y los servicios
en los que se apoya para su implementación. Para cada servicio rest
debe existir un paquete ‘es.carm.edu.app.serviceRS’ que contenga:
 Para cada servicio ‘xxx’ rest, una clase xxxService.java
 El módulo ‘ws’ contendrá la definición de un servicio web y su
correspondiente cliente (en un submódulo de éste). Para cada
implementación del servicio ‘xxx’ existirá un paquete
‘es.carm.edu.app.serviceWS’ que contenga:
 Para cada servicio ‘xxx’ ws, una clase xxxService.java
 Un submódulo maven ws-client (ej: libro-back-ws-client) con
la implementación del cliente de ws.
 El módulo ‘web’ es opcional y contendrá una aplicación web que
expondrá únicamente servicios web o rest. No tiene frontal accesible
a usuarios. Pero puede estar configurada con SSO CAS.
 En la configuración spring se dará de alta los servicios y se
configurará las dependencias de éstos, conexiones a bbdd, a
ldap, a otros servicios web, etc…
 El fichero ‘application.properties’ contendrá los parámetros
de configuración de la aplicación.
 Las variables que dependan de desarrollo o de producción (ip
de servicios web) deberán trasladarse al fichero
‘deploy.properties’.
 El fichero ‘deploy.proerties’ no pertenece a la aplicación. Es
manejado por sistemas. Configura el servidor donde será
alojada la aplicación war.
o El front dependerá de la tecnología de presentación elegida (JSF o
AngularJS) el nombre del proyecto será app-front (ej: libro-front)
 En la configuración spring se dará de alta los servicios y se
configurará las dependencias de éstos, conexiones a bbdd, a ldap, a
otros servicios web, etc…
 El fichero ‘application.properties’ contendrá los parámetros de
configuración de la aplicación.
 Las variables que dependan de desarrollo o de producción (ip de
servicios web) deberán trasladarse al fichero ‘deploy.properties’.
 El fichero ‘deploy.proerties’ no pertenece a la aplicación. Es
manejado por sistemas. Configura el servidor donde será alojada la
aplicación war.
 Usando AngularJS
Ubicación CVS: interno/recursos/documentacion/guia_desarrollo.doc
Pagina 2 de 3
Región de Murcia
Consejería de Educación, Universidades y Empleo
D.G. de Infraestructura y Promoción Educativo
Servicio de Gestión Informática

Avda. de La Fama, 15
30006 MURCIA
www.carm.es/educacion
Se puede dividir el front en dos módulos: front-web y frontrest para dividir la aplicación de los servicios rest que ésta
expone para su reutilización por otras aplicaciones angular.
(ej: libro-front-web y libro-front-rest).
Versionado
Todos los proyectos deben versionarse utilizando los mecanismos de versionado que
ofrece Maven, utilizando la etiqueta <version> que se encuentra dentro del fichero
pom.xml.
Siempre que se realicen modificaciones sobre un módulo y se proceda a una entrega (en
cualquier entorno) se ha de modificar el número de versión.
El número de versión estará formado por tres digitos.
Integración continua
Además de dar de alta el proyecto en CVS, hay que darlo de alta en Jenkins, para
introducirlo en el sistema de integración continua.
Jenkins es un software de integración continua open source escrito en Java. Jenkins
proporciona integración continua para el desarrollo del software
Publicación en Artifactory
Artifactory es un repositorio de artefactos maven. Las piezas que componen todas las
aplicaciones. No están permitida la publicación directa en Artifactory. Ha de ser Jenkins
quien haga la publicación.
De esta forma todos los proyectos usarán las mismas piezas de código y si un commit
en CVS produce una descompilación de otros paquetes, Jenkins se da cuenta y no
permite la publicación en Artifactory. Mantiendo estable el repositorio.
Despligue de la aplicación en un servidor
Actualmente esta tarea se hace desde Natalia. Y simplemente lo que hace es descargarse
el war directamente de Artifactory y lo deposita en el servidor correspondiente. Así se
evita que se despliegue una war sin haber pasado por CVS, por Jenkins y Artifactory.
Ubicación CVS: interno/recursos/documentacion/guia_desarrollo.doc
Pagina 3 de 3
Descargar