Reactor

screenshot of Reactor

Reactor Bill Of Materials (tracking reactor-core, reactor-netty and more)

Overview

The Reactor Project is an advanced framework that is organized into multiple projects such as reactor-core, reactor-netty, reactor-extra, and more community-driven integrations like reactor-kafka and reactor-rabbitmq. The Reactor Project provides a Bill of Materials (BOM) to ensure compatibility between these projects. The BOM simplifies dependency management by providing default artifact versions to use when adding dependencies to a project.

Features

  • Modular Structure: Reactor Project is organized into multiple projects such as reactor-core, reactor-netty, and reactor-extra for better modularity and flexibility.
  • Bill of Materials (BOM): Provides a curated set of compatible versions for all Reactor projects, ensuring smooth integration.
  • Maven and Gradle Support: Supports both Maven and Gradle build systems, making it versatile for various project setups.
  • Versioning Scheme: Follows a structured versioning scheme (YYYY.MINOR.MICRO-QUALIFIER) with associated codenames for release trains like Aluminium and Bismuth.

Using the BOM with Maven

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-bom</artifactId>
            <version>3.4.0-Europium</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Using the BOM with Gradle

Gradle 5.0+

dependencies {
    implementation platform("io.projectreactor:reactor-bom:3.4.0-Europium")
    implementation 'io.projectreactor:reactor-core'
    // Add other dependencies as needed
}

Gradle 4.x and earlier

Apply the Spring plugin:

plugins {
    id "io.spring.dependency-management" version "1.0.10.RELEASE"
}

Use the plugin to import the BOM and add dependencies:

dependencyManagement {
    imports {
        mavenBom "io.projectreactor:reactor-bom:3.4.0-Europium"
    }
}
dependencies {
    implementation 'io.projectreactor:reactor-core'
    // Add other dependencies as needed
}

Summary

The Reactor Project offers a comprehensive set of features including modular structure, a BOM for version compatibility, and support for both Maven and Gradle build systems. Its structured versioning scheme and associated codenames for release trains make it easier to manage dependencies and ensure smooth integration between projects.