JEX Starters
JEX Starters es una extension de Visual Studio Code con snippets y generadores para acelerar desarrollos Java con Spring Boot.
Esta extension esta pensada para proyectos que sigan convenciones JEX, pero no es una publicacion oficial de ninguna administracion u organismo publico.
Caracteristicas
- Snippets Java y YAML con prefijo
jex-.
- Generacion de esqueleto de entidad Spring Boot desde la paleta de comandos.
- Creacion de clases base para controller, mapper, model, repository, servicios y validator.
- Generacion de tests unitarios asociados.
- Actualizacion de una plantilla OpenAPI base cuando el flujo de generacion lo requiere.
- Creacion de proyectos Spring Boot con las convenciones comunes del servicio.
- Aplicacion de configuracion estandar sobre proyectos Spring Boot existentes.
Uso
Proyecto estandar
Para crear un proyecto nuevo con las convenciones comunes, ejecuta:
JEX Spring Boot: Crear Proyecto Estandar
La extension descargara el proyecto desde Spring Initializr y aplicara la configuracion compartida: pom.xml, recursos, OpenAPI, Logback, .vscode, GitLab CI, .versionrc, .gitignore y scripts locales. La receta no fija una version concreta de Spring Boot: deja que Spring Initializr genere la version 4 disponible y despues anade la configuracion comun sobre ese proyecto. Java queda configurado en 21.
El proyecto queda preparado como WAR para servidor externo: spring-boot-starter-tomcat se marca como provided, se conserva o genera ServletInitializer, y se incluyen tareas de VS Code para arrancar en local y generar el WAR con el perfil dev.
Para aplicar esa misma configuracion sobre el proyecto abierto, ejecuta:
JEX Spring Boot: Aplicar Configuracion Estandar
El comando es idempotente: anade o actualiza configuracion comun, conserva archivos existentes que no debe sobrescribir y muestra un resumen final.
Generacion de entidad
Abre un proyecto Spring Boot en VS Code y ejecuta el comando:
JEX Spring Boot: Generar Esqueleto de Entidad
La extension busca el pom.xml en la raiz del proyecto para detectar groupId y artifactId, y con esos datos calcula el packageName base.
Despues solicita el nombre de la entidad en singular y plural, en formato CamelCase. Por ejemplo:
Provincia
Provincias
Con esos datos genera archivos en src/main/java como:
controllers/ProvinciasController.java
mappers/ProvinciaMapper.java
models/Provincia.java
repositories/ProvinciaRepository.java
services/provincias/CrearProvincia.java
services/provincias/ActualizarProvincia.java
services/provincias/BorrarProvincia.java
services/provincias/ListarProvincias.java
services/provincias/ObtenerProvincia.java
validators/ProvinciaValidator.java
Tambien genera tests unitarios en src/test/java como:
controllers/ProvinciasControllerTest.java
mappers/ProvinciaMapperTest.java
models/ProvinciaTest.java
services/provincias/CrearProvinciaTest.java
services/provincias/ActualizarProvinciaTest.java
services/provincias/BorrarProvinciaTest.java
services/provincias/ListarProvinciasTest.java
services/provincias/ObtenerProvinciaTest.java
validators/ProvinciaValidatorTest.java
Snippets incluidos
Los snippets disponibles usan el prefijo jex-:
jex-entity
jex-entity-with-dates
jex-test-service
jex-test-controller
jex-service
jex-repository
jex-mapper
jex-openapi-endpoint
jex-endpoint-full-crud
jex-openapi-schemas
jex-service-create-unit-test
jex-service-findAll-unit-test
jex-service-findById-unit-test
Requisitos del proyecto
El generador asume un proyecto Spring Boot con:
pom.xml en la raiz del workspace.
- JUnit 5 y Mockito disponibles mediante las dependencias de test generadas por Spring Initializr.
- MapStruct configurado para generar la implementacion de los mappers.
- Entidades OpenAPI generadas con nombres como
ProvinciaSummary, ProvinciaDetail, ProvinciaCreate, ProvinciaDetailResponse y ProvinciasListResponse.
Desarrollo
Para probar la extension desde VS Code, abre esta carpeta en VS Code y ejecuta Run Extension desde el panel de depuracion, o pulsa F5 si esa configuracion esta seleccionada.
Se abrira una ventana nueva llamada Extension Development Host. En esa ventana abre un proyecto Spring Boot de prueba y ejecuta el comando JEX Spring Boot: Generar Esqueleto de Entidad.
Ejecutar los tests:
npm run test:run
Empaquetar
Generar un .vsix instalable:
npm run package
Instalar el .vsix en VS Code:
Extensions: Install from VSIX...
Publicar en Visual Studio Marketplace
Antes de publicar, crea o confirma un publisher en Visual Studio Marketplace cuyo identificador coincida con el campo publisher de package.json.
Despues inicia sesion con vsce:
vsce login raultm
Y publica:
vsce publish
Proximas versiones
Para publicar una nueva version, primero aplica los cambios de codigo o plantillas, ejecuta los tests y genera el paquete local:
npm run test:run
npm run package
Despues incrementa la version siguiendo SemVer:
npm version patch
Usa patch para correcciones pequenas, minor para nuevas funcionalidades compatibles y major para cambios incompatibles. El comando actualiza package.json y package-lock.json, crea un commit de version y genera una etiqueta Git como v0.1.2.
Finalmente publica en Visual Studio Marketplace:
vsce publish
Si en el futuro se adopta Conventional Commits, se puede automatizar el changelog, el commit y la etiqueta con commit-and-tag-version:
npm install --save-dev commit-and-tag-version
npm pkg set scripts.release="commit-and-tag-version"
npm run release
vsce publish