Skip to content

lg5-spring-parent

lg5-spring-parent es el BOM (Bill of Materials) central del framework. Es el módulo más importante porque define las versiones de todas las demás librerías y configura los plugins de Maven para todos los servicios.

Propósito

Genera un POM Parent que los microservicios heredan para obtener:

  • Versiones de dependencias centralizadas
  • Plugin management (compiler, surefire, failsafe, jacoco, checkstyle)
  • Perfiles de Docker (amd64/arm64)
  • Repositorios adicionales (Confluent Maven)

Configuración Técnica

Build Configuration

lg5-spring-parent/build.gradle.kts:

kotlin
subprojects {
    publishing {
        publications {
            create<MavenPublication>("parentJava") {
                from(components["java"])
                pom.packaging = "pom"
            }
        }
    }
}

Plugins Configurados

PluginVersiónPropósito
maven-compiler-plugin3.13.0Java 21, MapStruct + Lombok
maven-surefire-plugin3.5.2Unit tests
maven-failsafe-plugin3.5.2IT tests + acceptance tests
jacoco-maven-plugin0.8.12Code coverage
maven-checkstyle-plugin3.6.0Google Java Style
avro-maven-plugin1.12.0Avro codegen
jib-maven-plugin3.5.1Multi-arch Docker
spring-boot-maven-plugin3.5.14Build image
depgraph-maven-plugin4.0.3Dependency graph

Perfiles de Docker

xml
<!-- amd (default) -->
<profile>
    <id>amd</id>
    <properties>
        <os.arch>amd64</os.arch>
        <os.family>linux</os.family>
        <digest-amd>sha256:...</digest-amd>
    </properties>
</profile>

<!-- arm64 -->
<profile>
    <id>arch-aarch64</id>
    <properties>
        <os.arch>aarch64</os.arch>
        <os.family>linux</os.family>
        <digest-arm>sha256:...</digest-arm>
    </properties>
</profile>

Repositorios Configurados

xml
<repositories>
    <repository>
        <id>confluent</id>
        <url>https://packages.confluent.io/maven</url>
    </repository>
</repositories>

Uso en un Microservicio

xml
<parent>
    <groupId>com.lg5.spring</groupId>
    <artifactId>lg5-spring-parent</artifactId>
    <version>1.0.0-alpha.6ff1b95</version>
</parent>

Qué Heredas del Parent POM

  1. Spring Boot Parent como parent POM
  2. Plugins preconfigurados
  3. Perfiles Docker (amd64, arm64)
  4. Repositorio Confluent
  5. Properties configurados

Released under the MIT License.