Skip to content

[incubator-kie-6902] Inherit the platform versions from the kie stack BOMs (Quarkus and Spring Boot examples) - #2244

Merged
tiagobento merged 8 commits into
apache:mainfrom
nrknithin:quarkus-3_33_x
Sep 1, 2026
Merged

tiagobento merged 8 commits into
apache:mainfrom
nrknithin:quarkus-3_33_x

Conversation

@nrknithin

@nrknithin nrknithin commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Issue: apache/incubator-kie#6902
Related: apache/incubator-kie#6903 (Quarkus 3.33.3.1 upgrade)

Why

Every Quarkus example pinned Quarkus 3.27.5.1 in its own pom (version properties, its own quarkus-bom
import, explicit quarkus-maven-plugin version). Two problems:

  • Each Quarkus upgrade in incubator-kie needed a paired version-bump PR here — a cross-repo sync the CI
    no longer supports (each repo's PR builds the other repo's main).
  • Against the 3.33-built kie jars the pinned 3.27 internals mix with the newer Hibernate / Kafka /
    MongoDB / ProtoStream versions and ten modules fail — the red examples job on #6903.

kogito-quarkus-bom already defines version.io.quarkus and manages quarkus-maven-plugin (bom-splitting
design). The examples only imported it, which carries dependency management but not the plugin version
or the property — so they were never able to inherit the version.

What changed

  • kogito-quarkus-examples/pom.xml: parent is now org.kie.kogito:kogito-quarkus-bom;
    kogito-springboot-examples/pom.xml: parent is now org.kie.kogito:kogito-spring-boot-bom. Each
    aggregator keeps its apps BOM import and carries the examples' shared build configuration (test
    wiring, container image and resource properties, enforcer skip, compiler release, jar/source
    manifests, reproducible-build settings, project metadata) — a pom has a single parent, so that
    configuration cannot come from the examples root anymore. The two copies are marked to be kept in sync.
  • Examples root pom.xml: reduced to a plain module list (metadata, reproducible-build settings,
    enforcer skip); nothing else inherits its build configuration any longer (the Java examples are
    standalone poms, the Gradle wrappers only run Gradle).
  • 67 Quarkus example poms: pinned properties, per-module quarkus-bom import and plugin <version>
    deleted; the quarkus-maven-plugin groupId is written literally (io.quarkus) and the now-unused
    quarkus.platform.group-id / quarkus.platform.artifact-id properties dropped — with a property as the
    plugin groupId Maven cannot see the managed version during raw-model validation and warns on every
    module. 19 Spring Boot example poms: spring-boot-maven-plugin <version> deleted. The Spring Boot
    aggregator's own version.org.springframework.boot and version.io.netty pins are gone too (both now
    inherited from the BOM).
  • onboarding-example/pom.xml: its version-less pluginManagement entry for quarkus-maven-plugin
    removed (it shadowed the BOM's entry and made those modules fall back to the latest plugin).

No Quarkus or Spring Boot version is written anywhere in the Maven examples; no incubator-kie change needed.
The only remaining literals are the four Gradle examples' gradle.properties (quarkusPluginVersion /
quarkusPlatformVersion 3.27.5.1, springBootVersion 4.0.7): Gradle cannot inherit from a Maven parent,
and the gradle-examples CI job does not drive Gradle, so they are inert in CI. They still need a manual
bump once #6903 merges (2 lines × 2 files for Quarkus).

Effect

  • On today's main: resolves to the same 3.27.5.1 — no functional change.
  • After #6903: the examples pick up 3.33.3.1 automatically; future Quarkus upgrades can't break the
    examples through version mismatches anymore.

Verification

  • Effective poms before/after for a Quarkus, a Spring Boot, a Java and a Gradle example: build/test
    configuration identical for Quarkus and Spring Boot (only additions: the inherited BOM properties and,
    for Spring Boot, the BOM's four compile-scope dependencies that were already on the classpath — resolved
    runtime dependencies identical, 245/245). The Java examples are standalone poms and the Gradle wrappers
    never used the removed root configuration (effective poms unchanged / only kie defaults visible).
  • Root reactor, full build with unit + integration tests against the 3.33-built kie jars (the post-#6903
    state): 81/81 modules, 152 suites, 0 failures; all 62 quarkus:build executions on 3.33.3.1 from
    the BOM, including the ten modules that fail on #6903's examples job today; zero
    plugin.version is missing warnings.
  • Spring Boot examples (-Dspringboot, with unit + integration tests — note the kogito-springboot-examples
    CI job only builds the aggregator pom, as that profile is not active by default): 35/35 modules,
    0 failures
    , every spring-boot plugin run on 4.0.7 from the BOM.

@nrknithin nrknithin changed the title [incubator-kie-6902] Upgrade Quarkus to 3.33.3.1 (LTS) [incubator-kie-6902] Inherit the platform versions from the kie stack BOMs (Quarkus and Spring Boot examples) Aug 29, 2026
@nrknithin
nrknithin marked this pull request as ready for review August 29, 2026 08:57

@jomarko jomarko left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Looks good to me, I did not manual testing.

Comment thread kogito-springboot-examples/pom.xml Outdated
<failsafe.exclude>**/Native*IT.java</failsafe.exclude>
<alphanetworkCompilerEnabled>false</alphanetworkCompilerEnabled>
<tests.category></tests.category>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Duplicate with line 106

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Leftover from moving the config out of the root pom. Removed the duplicate, kept the one at line 106.

Comment on lines 39 to 42
<dependencyManagement>
<dependencies>
<dependency>
<groupId>${quarkus.platform.group-id}</groupId>
<artifactId>${quarkus.platform.artifact-id}</artifactId>
<version>${quarkus.platform.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This block is empty and could be removed

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Right, those are leftovers from dropping the platform BOM import. Removed the empty blocks — also in onboarding-example/payroll/pom.xml, which had the same leftover but wasn't flagged.

Comment on lines -37 to -41
<properties>
<quarkus-plugin.version>3.27.5.1</quarkus-plugin.version>
<quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
<quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
<quarkus.platform.version>3.27.5.1</quarkus.platform.version>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This block is empty and could be removed

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Same block as above — removed.

Comment on lines 37 to 42
<properties>
<quarkus-plugin.version>3.27.5.1</quarkus-plugin.version>
<quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
<quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
<quarkus.platform.version>3.27.5.1</quarkus.platform.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>${quarkus.platform.group-id}</groupId>
<artifactId>${quarkus.platform.artifact-id}</artifactId>
<version>${quarkus.platform.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Could be removed

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Removed here too, along with the same empty blocks in onboarding-example/payroll/pom.xml.

Comment thread kogito-springboot-examples/pom.xml Outdated
<version>${version.org.springframework.boot}</version>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
<version>2.5</version>
<version>${version.resources.plugin}</version>

I think we need to get it from BOM rather than hardcoding

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Agreed. Worth noting the 2.5 was already hardcoded in the old examples root pom — this PR only moved the block — but since we now inherit from the kie BOM chain, ${version.resources.plugin} (3.1.0) resolves fine. Applied it here and in kogito-quarkus-examples/pom.xml, which had the same hardcode.

Comment on lines +420 to +422
<configuration>
<skip>true</skip>
</configuration>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

If we are defining the enforcer, why do we need to skip

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

We’re not defining the enforcer here; the skip was already present in the old root POM, and this PR only merged duplicate declarations.

Removing our block doesn’t disable it — it’s inherited from kie-parent/kogito-build-no-bom-parent, and I verified the rules still run and fail.

I tested skipping only the two incompatible rules; the remaining rules work but expose 4 existing dependency violations that need fixing.

I’ll handle those in a follow-up PR if needed, enable the 3 workable rules, and clean up the now-dead enforce-versions config.

Comment on lines +351 to +353
<configuration>
<skip>true</skip>
</configuration>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Same here

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Same as the Quarkus aggregator — this shows as new only because the shared build config moved out of the root pom; the skip itself is pre-existing.

@tiagobento
tiagobento merged commit 0f4075b into apache:main Sep 1, 2026
4 checks passed
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.

5 participants