Skip to content

Parent POM for all Firefly Framework modules. Manages Spring Boot 3.5, Spring Cloud 2025, Java 21 versions, plugin configuration, and dependency alignment.

Notifications You must be signed in to change notification settings

fireflyframework/fireflyframework-parent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

89 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Firefly Framework - Parent POM

CI License Java Spring Boot

Parent POM for the Firefly Framework providing centralized dependency management, plugin configuration, and build standards for all framework modules.


Table of Contents

Overview

The Firefly Framework Parent POM serves as the foundational build configuration for all Firefly Framework modules. It centralizes dependency version management, plugin configurations, and build standards to ensure consistency across the entire framework ecosystem.

By inheriting from this parent POM, all Firefly modules automatically receive managed versions for Spring Boot 3.5.x, Spring Cloud 2025.0.x, database drivers, mapping libraries, testing frameworks, and build plugins. This eliminates version conflicts and simplifies dependency management across the framework.

The parent POM also configures annotation processors for Lombok, MapStruct, and Spring Boot Configuration Processor, along with Maven Enforcer rules requiring JDK 21+.

Features

Core Platform

  • Centralized dependency management for Spring Boot 3.5.x and Spring Cloud 2025.0.x
  • Pre-configured annotation processors (Lombok, MapStruct, Spring Boot Configuration Processor)
  • Maven Enforcer plugin requiring JDK 21+
  • Java 25 by default with Java 21 backward compatibility via -Pjava21

Database

  • Managed versions for PostgreSQL (JDBC and R2DBC), MySQL (R2DBC)
  • Flyway database migrations with multi-database support (PostgreSQL, MySQL, SQL Server, Oracle, DB2, HSQLDB, Derby, Informix, Cassandra, ClickHouse, TiDB)

API & Messaging

  • OpenAPI Generator plugin for server/client code generation from API specs
  • SpringDoc OpenAPI for reactive API documentation
  • gRPC 1.79.x and Protobuf 4.x version management
  • Apache Avro serialization

Cloud Providers

  • AWS SDK 2.x and Spring Cloud AWS
  • Spring Cloud Azure
  • Spring Cloud GCP

Resilience & Observability

  • Resilience4j BOM for fault tolerance patterns
  • OpenTelemetry BOM for distributed tracing and metrics
  • Logstash Logback Encoder for structured logging

Web Services

  • Apache CXF and JAX-WS for SOAP/WS-Security
  • WSS4J for WS-Security processing

Testing

  • Testcontainers BOM for integration testing
  • WireMock for HTTP service simulation

Security & Supply Chain

  • GraalVM Native Image support via -Pnative profile with Paketo Buildpacks
  • CycloneDX SBOM generation for application dependency transparency
  • BouncyCastle for cryptographic operations

Requirements

  • Java 21+
  • Maven 3.9+
  • Docker (for native image container builds with Paketo)
  • GraalVM (for local native image builds, optional)

Installation

Use this as a parent POM in your Firefly Framework module:

<parent>
    <groupId>org.fireflyframework</groupId>
    <artifactId>fireflyframework-parent</artifactId>
    <version>26.02.06</version>
    <relativePath/>
</parent>

Quick Start

Create a new Firefly Framework module by referencing the parent POM:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.fireflyframework</groupId>
        <artifactId>fireflyframework-parent</artifactId>
        <version>26.02.06</version>
        <relativePath/>
    </parent>

    <artifactId>my-firefly-module</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
    </dependencies>
</project>

All dependency versions are inherited automatically from the parent POM.

Managed Dependencies

BOMs (Bill of Materials)

BOM Version Description
Spring Boot 3.5.10 Core Spring Boot dependencies
Spring Cloud 2025.0.1 Spring Cloud integrations
Testcontainers 1.21.4 Container-based integration testing
Resilience4j 2.3.0 Fault tolerance patterns
gRPC 1.79.0 gRPC framework
OpenTelemetry 1.59.0 Observability and tracing
AWS SDK v2 2.41.24 Amazon Web Services
Spring Cloud AWS 3.4.2 Spring Cloud AWS integrations
Spring Cloud Azure 5.24.1 Azure service integrations
Spring Cloud GCP 6.5.4 Google Cloud integrations

Individual Dependencies

Dependency Version Description
PostgreSQL JDBC 42.7.9 PostgreSQL JDBC driver
R2DBC PostgreSQL 1.1.1.RELEASE PostgreSQL reactive driver
R2DBC MySQL 1.3.1 MySQL reactive driver
Flyway 11.20.3 Database migration tool
SpringDoc OpenAPI 2.8.15 API documentation (WebFlux)
OpenAPI Generator 7.19.0 Code generation from API specs
Swagger Annotations 2.2.42 OpenAPI annotations
MapStruct 1.6.3 Bean mapping code generation
Lombok 1.18.42 Boilerplate code reduction
Protobuf 4.33.5 Protocol Buffers serialization
Avro 1.12.1 Apache Avro serialization
Logstash Logback Encoder 8.1 Structured JSON logging
Janino 3.1.12 Logback conditional expressions
Reflections 0.10.2 Runtime class scanning
Apache CXF 4.1.4 SOAP/WS framework
JAX-WS RT 4.0.3 JAX-WS runtime
WSS4J 3.0.2 WS-Security implementation
WSDL4J 1.6.3 WSDL processing
JAXB XJC 4.0.6 XML binding code generation
BouncyCastle 1.77 Cryptographic library
ThreeTen-Extra 1.7.2 Additional date/time classes
Commons Math3 3.6.1 Mathematical functions
Amazon Kinesis Client 2.5.1 Kinesis stream processing
WireMock 3.13.2 HTTP mock server for testing

Managed Plugins

All plugins are declared in <pluginManagement> so child modules inherit versions and configuration without activating them by default.

Plugin Version Description
spring-boot-maven-plugin 3.5.10 Spring Boot packaging (Lombok excluded)
maven-compiler-plugin 3.15.0 Java compilation with annotation processors
maven-deploy-plugin 3.1.4 Artifact deployment
openapi-generator-maven-plugin 7.19.0 OpenAPI code generation
maven-source-plugin 3.4.0 Source JAR generation
maven-javadoc-plugin 3.12.0 Javadoc JAR generation
maven-surefire-plugin 3.5.4 Unit test execution
maven-failsafe-plugin 3.5.4 Integration test execution
maven-enforcer-plugin 3.6.2 Build rule enforcement (JDK 21+)
cyclonedx-maven-plugin 2.9.1 CycloneDX SBOM generation

Compiler Configuration

The maven-compiler-plugin is pre-configured with:

  • Annotation processors: Lombok, MapStruct, Lombok-MapStruct binding, Spring Boot Configuration Processor
  • Compiler arguments: -parameters (method parameter names at runtime), -proc:full (full annotation processing)

Configuration

Key properties that can be overridden in child modules:

<properties>
    <!-- Java version (default: 25) -->
    <java.version>25</java.version>

    <!-- Base package for code generation -->
    <base.package>org.fireflyframework</base.package>

    <!-- OpenAPI generation settings -->
    <openapi.skip.validate>false</openapi.skip.validate>
    <openapi.use.tags>true</openapi.use.tags>
    <openapi.use.optional>true</openapi.use.optional>
    <openapi.date.library>java8</openapi.date.library>
</properties>

Build Profiles

Profile Activation Description
java21 -Pjava21 Sets java.version to 21 for backward compatibility
native -Pnative Enables Spring AOT processing and GraalVM native image builds with Paketo Buildpacks
release -Prelease Generates source and Javadoc JARs
maven-central -Pmaven-central GPG signing, POM flattening, and Maven Central publishing

Native Image Builds

The native profile provides infrastructure for building GraalVM native images. It configures two plugins via pluginManagement:

  • spring-boot-maven-plugin with process-aot goal for Spring Ahead-of-Time processing
  • native-maven-plugin (GraalVM 0.11.4) with build goal for native compilation
  • Paketo Buildpacks (paketobuildpacks/builder-jammy-tiny) for containerized native image builds

Enabling Native Builds in a Child Module

Child modules opt in by declaring both plugins (version and configuration are inherited):

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.graalvm.buildtools</groupId>
            <artifactId>native-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

Building

# Local GraalVM native executable (requires GraalVM installed)
mvn -Pnative package

# Containerized native image via Paketo Buildpacks (requires Docker)
mvn -Pnative spring-boot:build-image

Paketo Buildpacks automatically generate container-level SBOMs (Syft, SPDX, CycloneDX) embedded in the built image, covering OS packages, JDK, and buildpack-installed components.

SBOM Generation

The parent POM provides managed configuration for the CycloneDX Maven Plugin, generating application-level Software Bill of Materials (SBOM) in CycloneDX JSON format.

Enabling SBOM in a Child Module

Declare the plugin (version and configuration are inherited):

<build>
    <plugins>
        <plugin>
            <groupId>org.cyclonedx</groupId>
            <artifactId>cyclonedx-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

This generates application.cdx.json at META-INF/sbom/ inside the built JAR, containing all direct and transitive Maven dependencies with versions, licenses, and hashes.

Spring Boot Actuator Integration

Spring Boot 3.3+ automatically detects the SBOM at META-INF/sbom/application.cdx.json and exposes it via the actuator:

management:
  endpoints:
    web:
      exposure:
        include: health,sbom

The SBOM is then available at GET /actuator/sbom/application.

Full Supply-Chain Coverage

Layer Tool Coverage
Application CycloneDX Maven Plugin Maven dependencies, transitive deps, licenses
Container Paketo Buildpacks OS packages, JDK runtime, buildpack components

Contributing

Contributions are welcome. Please read the CONTRIBUTING.md guide for details on our code of conduct, development process, and how to submit pull requests.

License

Copyright 2024-2026 Firefly Software Solutions Inc.

Licensed under the Apache License, Version 2.0. See LICENSE for details.

About

Parent POM for all Firefly Framework modules. Manages Spring Boot 3.5, Spring Cloud 2025, Java 21 versions, plugin configuration, and dependency alignment.

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors 4

  •  
  •  
  •  
  •