Skip to content

Jafly. Build Parent

Build Parent

Inherit a consistent Java build, dependency platform, and plugin configuration for framework-based services.

Use this POM as your Maven parent when you want the framework build defaults. Applications with a different corporate parent can import the BOM instead. Dependency management does not by itself place managed libraries on the runtime classpath.

Maven artifact Packaging Source project
org.fireflyframework:fireflyframework-parent pom build/parent

Part of Team-wide architecture.

In the onboarding service

The onboarding example inherits this parent and keeps its own application version. Use that arrangement when the service should share the framework compiler and plugin settings.

Add the component

Installation and version availability explains source builds and published releases.

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

Configuration and wiring

This POM has no runtime configuration namespace. Configure the selected child libraries in the application that uses them.

Build and test

Use Java 25. From the repository root, build this component with its required dependencies:

git clone https://github.com/fireflyframework/fireflyframework-jafly.git
cd fireflyframework-jafly
./mvnw -pl :fireflyframework-parent -am verify
./mvnw -pl :fireflyframework-parent -am install

verify runs the selected projects' tests. install makes the current build available in your local Maven repository.

This subproject has no authored src/test/java suite. Its Maven build still validates the configured compilation/generation and any reactor prerequisites. Use the consuming component tests to validate integration behavior.

Detailed reference

Managed platform and tool versions

Versions below are read directly from the parent POM. Spring Boot supplies additional dependency management; consult the effective POM for the complete resolved dependency set.

Property Managed value
java.version 25
spring-boot.version 4.1.1
spring-cloud.version 2025.1.3
openapi-generator.version 7.26.0
lombok.version 1.18.46
testcontainers.version 2.0.5
spring-cloud-aws.version 4.2.0
spring-cloud-azure.version 7.4.0
spring-cloud-gcp.version 8.2.4
maven-compiler-plugin.version 3.15.0
maven-surefire-plugin.version 3.6.0
maven-failsafe-plugin.version 3.6.0
native-maven-plugin.version 1.1.14

Imported dependency platforms

BOM Version expression
com.fasterxml.jackson:jackson-bom ${jackson2-bom.version}
tools.jackson:jackson-bom ${jackson-bom.version}
org.glassfish.jersey:jersey-bom ${jersey.version}
org.springframework.boot:spring-boot-dependencies ${spring-boot.version}
org.springframework.cloud:spring-cloud-dependencies ${spring-cloud.version}
org.testcontainers:testcontainers-bom ${testcontainers.version}
io.github.resilience4j:resilience4j-bom ${resilience4j.version}
io.grpc:grpc-bom ${grpc.version}
io.opentelemetry:opentelemetry-bom ${opentelemetry.version}
software.amazon.awssdk:bom ${aws-sdk.version}
io.awspring.cloud:spring-cloud-aws-dependencies ${spring-cloud-aws.version}
com.azure.spring:spring-cloud-azure-dependencies ${spring-cloud-azure.version}
com.google.cloud:spring-cloud-gcp-dependencies ${spring-cloud-gcp.version}

Build profiles

Profile Intended use
java21 See the exact activation and plugin configuration in the parent POM.
native Opt-in GraalVM native tooling; activate in a consuming application and qualify that application independently.
release Release packaging and validation.
maven-central Release signing, flattening, and Central publication; use the root guarded release workflow rather than publishing ad hoc.

Compiler and annotation processing

The parent configures the compiler, annotation processors, source/Javadoc artifacts, test tooling, and build enforcement. Review its pluginManagement before overriding a plugin in a consumer. The parent is management-only for optional compatibility libraries: a managed Jackson 2 version does not automatically add Jackson 2 runtime dependencies to every application.

Native compilation depends on the consuming application, supported libraries, and a suitable GraalVM environment. A successful JVM reactor build does not establish native-image compatibility. See the root release guide for publication gates and the Maven guide for inheritance versus BOM import.

Continue the application

Use the CQRS guide for the next part of this integration. The runnable submission/query service is in Getting started.

Source and further reading