Skip to content

Conversation

@ricardozanini
Copy link
Member

@ricardozanini ricardozanini commented Dec 10, 2025

Many thanks for submitting your Pull Request ❤️!

What this PR does / why we need it:
Users can now do:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>io.serverlessworkflow</groupId>
      <artifactId>serverlessworkflow-bom</artifactId>
      <version>8.0.0-SNAPSHOT</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

Special notes for reviewers:
The commited BOM is not the full bom because the maven plugin is doing that job during the install phase. The installed/released file will be something like this:

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>io.serverlessworkflow</groupId>
    <artifactId>serverlessworkflow-parent</artifactId>
    <version>8.0.0-SNAPSHOT</version>
  </parent>
  <groupId>io.serverlessworkflow</groupId>
  <artifactId>serverlessworkflow-bom</artifactId>
  <version>8.0.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>Serverless Workflow :: BOM</name>
  <description>Bill of Materials for Serverless Workflow Java SDK</description>
  <properties>
    <version.io.serverlessworkflow>8.0.0-SNAPSHOT</version.io.serverlessworkflow>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverless-workflow-jackson-generator</artifactId>
        <version>${version.io.serverlessworkflow}</version>
        <type>maven-plugin</type>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverless-workflow-types-generator</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-annotations</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-api</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-examples-events</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-examples-simpleGet</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-experimental-fluent-func</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-experimental-lambda</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-experimental-model</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-experimental-types</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-fluent-spec</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-container</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-core</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-function</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-http</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-jackson</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-jackson-jwt</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-jq</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-json</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-lifecycle-events</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-model</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-openapi</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-script-js</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-script-python</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-template-resolver</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-test</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-validation</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-mermaid</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-persistence-api</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-persistence-big-map</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-persistence-jackson-marshaller</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-persistence-mvstore</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-serialization</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-types</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
</project>

Additional information (if needed):

@fjtirado
Copy link
Collaborator

fjtirado commented Dec 11, 2025

Hmmmm, actually, Im not sure we want a user to include all those dependencies at runtime.
For example

 <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverless-workflow-jackson-generator</artifactId>
        <version>${version.io.serverlessworkflow}</version>
        <type>maven-plugin</type>
      </dependency>

is not really needed at runtime.

Same for examples, test and the already existing bom, jackson-impl.

And its argueable if we should include persistence.

Since already have a bom of dependencies for jackson here. I think what we need is to expand it (another one) to have jackson+http+javascript+pyhton (everything except generators, persistence, experimental and examples)

So this new pom should consist of following dependencies

 <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-jackson</artifactId>
        <version>${version.io.serverlessworkflow}</version>
        <type>pom</type>
       <scope>import</scope>
    </dependency>
 <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-openapi</artifactId>
        <version>${version.io.serverlessworkflow}</version>
 </dependency>
  <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-script-js</artifactId>
        <version>${version.io.serverlessworkflow}</version>
  </dependency>
  <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-script-python</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
  <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-http</artifactId>
        <version>${version.io.serverlessworkflow}</version>
      </dependency>
  <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-impl-jackson-jwt</artifactId>
        <version>${version.io.serverlessworkflow}</version>
    </dependency>

Copy link
Collaborator

@fjtirado fjtirado left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The idea is good, but as commented I think we need an alternative approach

@fjtirado
Copy link
Collaborator

Ok, my misunderstanding, I do not realize about , I believe we were importing actual dependencies.

@fjtirado fjtirado self-requested a review December 11, 2025 12:29
@ricardozanini ricardozanini merged commit 0016fff into serverlessworkflow:main Dec 11, 2025
3 checks passed
@ricardozanini ricardozanini deleted the bom-module branch December 11, 2025 14:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants