Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 14 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,22 @@ name: CI
on:
push:
branches: [develop]
paths-ignore:
- '**.md'
- 'docs/**'
- 'tutorials/**'
- 'examples/**/README.md'
- 'LICENSE'
- '.gitignore'
pull_request:
branches: [develop, main]
paths-ignore:
- '**.md'
- 'docs/**'
- 'tutorials/**'
- 'examples/**/README.md'
- 'LICENSE'
- '.gitignore'
workflow_dispatch:
inputs:
triggered-by:
Expand All @@ -13,10 +27,5 @@ on:
jobs:
build:
uses: fireflyframework/.github/.github/workflows/java-ci.yml@main
permissions:
packages: read
contents: read
actions: write
with:
java-version: '25'
secrets: inherit
120 changes: 56 additions & 64 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,50 @@
# Firefly Framework - Bill of Materials (BOM)

[![CI](https://github.com/fireflyframework/fireflyframework-bom/actions/workflows/ci.yml/badge.svg)](https://github.com/fireflyframework/fireflyframework-bom/actions/workflows/ci.yml)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)
[![Java](https://img.shields.io/badge/Java-21%2B-orange.svg)](https://openjdk.org)
[![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.x-green.svg)](https://spring.io/projects/spring-boot)

> Bill of Materials for the Firefly Framework ensuring consistent, compatible versions across all framework modules.

---

## Table of Contents

- [Overview](#overview)
- [Features](#features)
- [Requirements](#requirements)
- [Installation](#installation)
- [Quick Start](#quick-start)
- [Configuration](#configuration)
- [Documentation](#documentation)
- [Contributing](#contributing)
- [License](#license)

A Maven BOM that provides centralized version management for all Firefly Framework modules. Importing this artifact into your `dependencyManagement` section ensures that every framework dependency resolves to a compatible, tested version without requiring explicit version declarations.
## Overview

## What is a BOM?
The Firefly Framework BOM (Bill of Materials) provides centralized version management for all Firefly Framework modules. By importing this BOM into your project's `dependencyManagement` section, you ensure that every framework dependency resolves to a compatible, tested version without requiring explicit version declarations.

A Bill of Materials is a special POM artifact (`<packaging>pom</packaging>`) that declares a set of dependency versions. When imported via `<scope>import</scope>`, it allows your project to omit `<version>` tags on those dependencies while guaranteeing version consistency across the entire dependency tree.
This is the recommended approach when your project already has its own parent POM and cannot inherit from `fireflyframework-parent`. The BOM covers all core modules, application layers, ECM adapters, IDP implementations, notification providers, rule engine components, webhooks, callbacks, and the config server.

## Usage
## Features

- Single import provides version management for all Firefly Framework modules
- Covers core framework modules (cache, EDA, CQRS, event sourcing, transactional engine)
- Covers application layers (application, backoffice, web, domain, data)
- Covers ECM modules and storage adapters (AWS S3, Azure Blob)
- Covers IDP modules (Keycloak, AWS Cognito, internal DB)
- Covers notification providers and core
- Covers rule engine, workflow, webhooks, callbacks, and plugins
- Covers config server
- Compatible with any parent POM

## Requirements

- Java 21+
- Maven 3.9+

## Installation

Import the BOM in your project's `dependencyManagement` section:

Expand All @@ -18,93 +54,49 @@ Import the BOM in your project's `dependencyManagement` section:
<dependency>
<groupId>org.fireflyframework</groupId>
<artifactId>fireflyframework-bom</artifactId>
<version>1.0.0-SNAPSHOT</version>
<version>26.01.01</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
```

Then declare framework dependencies without specifying versions:
## Quick Start

After importing the BOM, add any Firefly Framework module without specifying a version:

```xml
<dependencies>
<dependency>
<groupId>org.fireflyframework</groupId>
<artifactId>fireflyframework-eda</artifactId>
<artifactId>fireflyframework-core</artifactId>
</dependency>
<dependency>
<groupId>org.fireflyframework</groupId>
<artifactId>fireflyframework-cqrs</artifactId>
<artifactId>fireflyframework-web</artifactId>
</dependency>
<dependency>
<groupId>org.fireflyframework</groupId>
<artifactId>fireflyframework-cache</artifactId>
<artifactId>fireflyframework-eda</artifactId>
</dependency>
</dependencies>
```

## BOM vs Parent POM

| Approach | When to Use |
|---|---|
| **fireflyframework-parent** | Your project can inherit from the Firefly parent. This gives you both version management and plugin configuration. |
| **fireflyframework-bom** | Your project already has its own parent POM. The BOM provides version alignment only, without imposing build conventions. |

If you inherit from `fireflyframework-parent`, you do not need to import the BOM separately -- the parent already includes all managed versions.

## Managed Artifacts

### Core Framework

| Artifact ID | Description |
|---|---|
| `fireflyframework-core` | Actuator, health indicators, service registry, observability |
| `fireflyframework-domain` | DDD base entities, value objects, aggregate roots |
| `fireflyframework-utils` | Shared utilities and template rendering |
| `fireflyframework-validators` | Annotation-based data validators |
| `fireflyframework-web` | WebFlux exception handling, idempotency, OpenAPI |
| `fireflyframework-client` | Reactive REST, SOAP, gRPC client with resilience |
| `fireflyframework-cache` | Multi-provider caching abstraction |
| `fireflyframework-r2dbc` | Reactive database auto-configuration |

### Distributed Patterns

| Artifact ID | Description |
|---|---|
| `fireflyframework-eda` | Event-Driven Architecture with Kafka/RabbitMQ |
| `fireflyframework-cqrs` | Command Query Responsibility Segregation |
| `fireflyframework-eventsourcing` | Event Sourcing with snapshots and projections |
| `fireflyframework-transactional-engine` | Saga and TCC distributed transactions |
| `fireflyframework-workflow` | Workflow orchestration engine |
| `fireflyframework-data` | Data processing and job orchestration |

### Enterprise Content Management
## Configuration

| Artifact ID | Description |
|---|---|
| `fireflyframework-ecm` | Core ECM abstractions |
| `fireflyframework-ecm-storage-aws` | Amazon S3 storage adapter |
| `fireflyframework-ecm-storage-azure` | Azure Blob Storage adapter |
No configuration is required. The BOM is a version-management-only artifact with no runtime behavior.

### Identity Provider
## Documentation

| Artifact ID | Description |
|---|---|
| `fireflyframework-idp` | IDP abstraction layer |
| `fireflyframework-idp-aws-cognito` | AWS Cognito adapter |
| `fireflyframework-idp-internal-db` | Database-backed IDP |
| `fireflyframework-idp-keycloak` | Keycloak adapter |
No additional documentation available for this project.

### Notifications
## Contributing

| Artifact ID | Description |
|---|---|
| `fireflyframework-notifications` | Core notification abstractions |
Contributions are welcome. Please read the [CONTRIBUTING.md](CONTRIBUTING.md) guide for details on our code of conduct, development process, and how to submit pull requests.

## License

Apache License 2.0
Copyright 2024-2026 Firefly Software Solutions Inc.

Copyright 2024-2026 Firefly Software Solutions Inc.
Licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for details.
39 changes: 39 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -312,5 +312,44 @@
</plugins>
</build>
</profile>
<profile>
<id>maven-central</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.2.7</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
<configuration>
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.7.0</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<autoPublish>true</autoPublish>
<waitUntil>published</waitUntil>
<checksums>required</checksums>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
Loading