@becaskurtces/gaia-be-spring-parent
v1.0.1
Published
Spring parent POM and starter modules packaged for npm distribution.
Readme
Domain Spring Parent
Parent POM y Spring Boot Starters para proyectos Domain basados en arquitectura Clean/Hexagonal con patrón CQRS.
📦 Módulos
| Módulo | Descripción |
|--------|-------------|
| gaia-be-spring-parent | Parent POM con dependencias, plugins y perfiles preconfigurados |
| domain-spring-boot-starter | Código reutilizable (admin, common, config) + autoconfiguración |
| domain-spring-boot-starter-test | Utilidades de test (ArchUnit, BDD/Cucumber) |
🚀 Quick Start
Opción 1: Usar el parent (RECOMENDADO)
<parent>
<groupId>com.entity.domain</groupId>
<artifactId>gaia-be-spring-parent</artifactId>
<version>1.4.38</version>
</parent>
<dependencies>
<dependency>
<groupId>com.entity.domain</groupId>
<artifactId>domain-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.entity.domain</groupId>
<artifactId>domain-spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>Opción 2: Solo el starter (si ya tienes otro parent)
<dependency>
<groupId>com.entity.domain</groupId>
<artifactId>domain-spring-boot-starter</artifactId>
<version>1.4.38</version>
</dependency>📋 Requisitos
- Java 21+
- Spring Boot 3.5.x
- Maven 3.x
📖 Documentación
| Documento | Descripción | |-----------|-------------| | domain-spring-boot-starter/README.md | Configuraciones y componentes del starter | | domain-spring-boot-starter-test/README.md | Tests de arquitectura y BDD |
🏗️ Arquitectura Esperada
El starter está diseñado para proyectos que sigan esta estructura:
com.entity.domain.{module}/
├── core/ # Escrituras (Command)
│ ├── domain/ # Entidades, Value Objects, Servicios de dominio
│ │ └── service/
│ │ ├── in/ # Puertos de entrada (interfaces)
│ │ └── out/ # Puertos de salida (interfaces)
│ ├── application/ # Casos de uso, servicios de aplicación
│ │ └── service/ # Implementaciones de domain.service.in
│ └── adapter/
│ ├── in/ # Adaptadores de entrada
│ │ ├── rest/ # Controllers REST
│ │ └── kafka/ # Consumers Kafka
│ └── out/ # Adaptadores de salida
│ ├── mongodb/ # Repositorios MongoDB
│ │ └── service/ # Implementaciones de domain.service.out
│ └── kafka/ # Producers Kafka
├── view/ # Lecturas (Query) - misma estructura que core
│ ├── domain/
│ ├── application/
│ └── adapter/
├── common/ # (opcional) Código compartido del módulo
└── config/ # (opcional) Configuraciones específicas del módulo🎯 Perfiles Maven
Heredados automáticamente al usar gaia-be-spring-parent:
| Perfil | Comando | Descripción |
|--------|---------|-------------|
| local | mvn clean compile -Plocal | Formatea código y organiza imports |
| archunit-test | mvn verify -Dmaven.main.skip -Parchunit-test | Solo tests de arquitectura |
| junit-test | mvn verify -Dmaven.main.skip -Pjunit-test | Tests unitarios + cobertura JaCoCo |
| bdd-test | mvn verify -Dmaven.main.skip -Pbdd-test | Tests BDD/Cucumber + reports |
| bdd-pre | mvn verify -Dmaven.main.skip -Pbdd-pre | BDD en entorno PRE |
| sbom | mvn clean package -Psbom | Genera SBOM con CycloneDX |
🔧 Build & Publish
Usando el script (recomendado)
# Ver ayuda
./scripts/build-and-publish.sh --help
# Publicar en local
./scripts/build-and-publish.sh --local --snapshot
# Publicar RC en remoto (crea tag en git)
./scripts/build-and-publish.sh --remote --rc 1
# Publicar versión final en remoto (crea tag en git)
./scripts/build-and-publish.sh --remote --releaseManualmente
# Compilar
mvn clean compile
# Tests
mvn clean test
# Instalar en local
mvn clean install
# Publicar en remoto
mvn clean deploy📝 Versionado
- SNAPSHOT: Versiones de desarrollo (
1.2.0-YYYYMMDDHHMMSS-SNAPSHOT) - RC: Release Candidates (
1.2.0-RC.1,1.2.0-RC.2) - Release: Versiones finales (
1.2.0)
Los tags de git se crean automáticamente para RC y Release al publicar en remoto.
🏢 Repositorios Maven
El parent configura automáticamente los repositorios de Azure DevOps:
- Snapshots:
https://pkgs.dev.azure.com/devopsentity/.../snapshots - Releases:
https://pkgs.dev.azure.com/devopsentity/.../releases
📚 Dependencias Principales
| Categoría | Dependencias | |-----------|-------------| | Core | Spring Boot 3.5.x, Spring Cloud 2025.0.0 | | Persistence | MongoDB, Mongock | | Messaging | Kafka, Confluent Schema Registry, Avro | | Docs | SpringDoc OpenAPI | | Mapping | MapStruct, Lombok | | Testing | JUnit 5, Mockito, ArchUnit, Cucumber, RestAssured | | AWS | Spring Cloud AWS, AWS SDK v2 |
