Cada tipo de desarrollo requiere un conjunto de normas específicas para su desarrollo y gestión. Por ejemplo, los productos desarrollados con Maven requieren una serie de directrices específicas en cuanto a su estructura y configuración, mientras que los productos basados en Angular requieren un enfoque diferente en cuanto a la gestión de dependencias y versiones, por poner algunos ejemplos.
Por esta razón, se ha establecido un conjunto de normas específicas para cada uno, buscando asegurar la calidad y estabilidad de los productos a desarrollar. Además, esto permite ser más eficientes en el desarrollo, ya que la normalización permite que se puedan utilizar automatismos para la construcción, empaquetado y despliegue.
Estructura del proyecto
Obligatorio
Con el objetivo de descentralizar dependencias y repositorios, y proponer así una estructura de proyecto única y uniforme en proyectos Java, se recomienda el uso de "Standard Directory Layout".
mvn archetype:generate
Para buscar en la lista un arquetipo que se ajuste a la tecnología que se va a emplear y que cree la estructura necesaria.
Lugar del pom.xml padre
El pom.xml padre se creara en la raíz del proyecto.
Standard Directory Layout
- maven-project
- pom.xml
- README.txt
- NOTICE.txt
- LICENSE.txt
- test
- java
- resources
Directorio principal
Es el directorio raíz de cada proyecto de Maven, estos son los archivos y directorio que debe de tener este directorio:
Directorio principal src
El directorio mas importante de un proyecto Maven, todo lo que forme parte de un artefacto ya sea un jar o war debe estar presente aquí
Dentro de src se deben tener los siguientes subdirectorios:
Directorio src/test
El directorio src/test es el lugar donde residen las pruebas de cada componente en la aplicación, estos directorios o archivo no formarán parte del artefacto.
Debe de contener los siguiente subdirectorios:
Coordenadas
Obligatorio
La convención para nomenclatura de las coordenadas del pom.xml serán las siguientes:
- GroupID: es.juntadeandalucia.<SistemaInformacion>
- ArtifactID: NombreComponente
- Versión: X.Y.Z / X.Y.Z-SNAPSHOT (para versiones snapshots)
Nota: Snapshots: versiones candidatas a liberar que actualmente no son estables.
El repositorio rechazará las subidas que no cumplan con el patrón:
- es/juntadeandalucia/*
Se admitirán por compatibilidad los siguientes, no debiendo usarse para nuevos desarrollos:
- es/junta-andalucia/*
- es/jda/*
Creación del fichero README.md y CHANGELOG.md
Obligatorio
Se crearán los ficheros README.md, con información de interés para la construcción (como por ejemplo, instrucciones de compilación y empaquetado), así como un fichero CHANGELOG.md que para realizar el control de cambios.
Formato del fichero CHANGELOG.md
Recomendado
Se recomienda seguir las buenas prácticas descritas en "Keep a Changelog"
Dependencias del proyecto
Obligatorio
No se deben definir intervalos de versiones en las dependencias del pom.xml, por ejemplo:
<version>[1.1.15,1.2.0)</version>, no es una opción válida. Se tienen que proporcionar versiones cerradas.
Plugin JaCoCo
Obligatorio
Para el análisis de la cobertura se utilizará la herramienta JaCoCo. Como resultado de la ejecución de la herramienta, se generará un fichero jacoco.xml que permitirá cargar la información generada en otras herramientas de visualización, que en nuestro caso será SonarQube. Para utilizar JaCoCo en el proyecto, se debe incluir en el pom.xml de los productos en los que se deba realizar el análisis de cobertura el siguiente plugin, con la configuración indicada:
La ubicación del fichero jacoco.xml como otras configuraciones para la carga automatizada en SonarQube se realizarán sobre el fichero sonar.properties. Por ejemplo: