diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b9093b6..5bea884 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -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: diff --git a/README.md b/README.md index 8ec6834..2654b1a 100644 --- a/README.md +++ b/README.md @@ -1,106 +1,132 @@ # Firefly Framework - Parent POM [![CI](https://github.com/fireflyframework/fireflyframework-parent/actions/workflows/ci.yml/badge.svg)](https://github.com/fireflyframework/fireflyframework-parent/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) -The parent POM for all Firefly Framework modules. It centralizes dependency management, plugin configuration, and build conventions so that individual modules inherit a consistent, production-ready baseline without duplicating configuration. +> Parent POM for the Firefly Framework providing centralized dependency management, plugin configuration, and build standards for all framework modules. -## Purpose +--- -When a Firefly Framework module (or a downstream application) declares `fireflyframework-parent` as its parent, it inherits: +## Table of Contents -- **Dependency version alignment** across Spring Boot, Spring Cloud, database drivers, serialization libraries, resilience utilities, and testing frameworks. -- **Plugin configuration** for compilation, testing, packaging, source/javadoc generation, and OpenAPI code generation. -- **Annotation processor wiring** for Lombok, MapStruct, and Spring Boot Configuration Processor. -- **Consistent compiler settings** targeting Java 25 (default, Java 21+ compatible) with `-parameters` for reflection-friendly bytecode. -- **Java 21 backward compatibility** via `-Pjava21` Maven profile. +- [Overview](#overview) +- [Features](#features) +- [Requirements](#requirements) +- [Installation](#installation) +- [Quick Start](#quick-start) +- [Configuration](#configuration) +- [Documentation](#documentation) +- [Contributing](#contributing) +- [License](#license) -## Managed Versions +## Overview -### Runtime +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. -| Dependency | Version | -|---|---| -| Spring Boot | 3.5.10 | -| Spring Cloud | 2025.0.1 | -| Java | 25 (default, 21+ compatible) | -| SpringDoc OpenAPI | 2.8.15 | -| Resilience4j | 2.3.0 | -| MapStruct | 1.6.3 | -| Lombok | 1.18.42 | -| Logstash Logback Encoder | 8.1 | +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. -### Database +The parent POM also configures annotation processors for Lombok, MapStruct, and Spring Boot Configuration Processor, along with Maven Enforcer rules requiring JDK 21+. -| Dependency | Version | -|---|---| -| PostgreSQL Driver | 42.7.8 | -| R2DBC PostgreSQL | 1.0.9.RELEASE | -| Flyway | 11.7.2 | +## Features -### Communication +- Centralized dependency management for Spring Boot 3.5.x and Spring Cloud 2025.0.x +- Managed versions for PostgreSQL, R2DBC, and Flyway database migrations (multi-database support) +- Pre-configured annotation processors (Lombok, MapStruct, Spring Boot Configuration Processor) +- OpenAPI Generator plugin configuration for server/client code generation from API specs +- Maven Enforcer plugin requiring JDK 21+ +- Testcontainers BOM for integration testing +- Resilience4j BOM for fault tolerance patterns +- gRPC 1.79.x and Protobuf 4.x version management +- AWS SDK 2.x, Spring Cloud Azure, and Spring Cloud GCP dependency management +- SpringDoc OpenAPI for reactive API documentation +- Release profile with source and Javadoc JAR generation +- Java 21 backward compatibility via `-Pjava21` Maven profile -| Dependency | Version | -|---|---| -| gRPC | 1.79.0 | -| Protobuf | 4.33.5 | -| OpenAPI Generator | 7.19.0 | -| Swagger Annotations | 2.2.42 | +## Requirements -### Cloud Providers +- Java 21+ +- Maven 3.9+ -| Dependency | Version | -|---|---| -| AWS SDK | 2.41.24 | -| Spring Cloud AWS | 3.4.2 | -| Spring Cloud Azure | 5.24.1 | -| Spring Cloud GCP | 6.5.4 | +## Installation -### Testing - -| Dependency | Version | -|---|---| -| Testcontainers | 1.21.4 | -| Surefire Plugin | 3.5.4 | -| Failsafe Plugin | 3.5.4 | - -## Usage - -### As a Parent POM (Recommended) - -Declare `fireflyframework-parent` as the parent of your module or application: +Use this as a parent POM in your Firefly Framework module: ```xml org.fireflyframework fireflyframework-parent - 1.0.0-SNAPSHOT + 26.01.01 ``` -This gives your project all managed dependency versions, plugin configurations, and annotation processor wiring out of the box. +## Quick Start + +Create a new Firefly Framework module by referencing the parent POM: -### If You Already Have a Parent +```xml + + + 4.0.0 + + + org.fireflyframework + fireflyframework-parent + 26.01.01 + + + + my-firefly-module + + + + org.springframework.boot + spring-boot-starter-webflux + + + +``` -If your project already has a different parent POM and cannot inherit from `fireflyframework-parent`, use the [fireflyframework-bom](https://github.com/fireflyframework/fireflyframework-bom) instead for dependency version management. +All dependency versions are inherited automatically from the parent POM. -## Plugin Configuration +## Configuration -The parent POM configures the following plugins in `pluginManagement`: +Key properties that can be overridden in child modules: -| Plugin | Purpose | -|---|---| -| `spring-boot-maven-plugin` | Packaging Spring Boot applications (excludes Lombok from fat JAR) | -| `maven-compiler-plugin` | Java 25 (default) compilation with Lombok + MapStruct + Spring Boot Configuration Processor | -| `maven-source-plugin` | Attaches source JARs to build artifacts | -| `maven-javadoc-plugin` | Generates and attaches Javadoc JARs | -| `maven-surefire-plugin` | Unit test execution | -| `maven-failsafe-plugin` | Integration test execution | -| `openapi-generator-maven-plugin` | Server/client code generation from OpenAPI specifications | -| `maven-deploy-plugin` | Artifact deployment to Maven repositories | +```xml + + + 25 -## License + + org.fireflyframework + + + false + true + +``` + +Build with Java 21 compatibility: + +```bash +mvn clean install -Pjava21 +``` + +## Documentation -Apache License 2.0 +No additional documentation available for this project. + +## Contributing + +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 Copyright 2024-2026 Firefly Software Solutions Inc. + +Licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for details.