From 68dc2ff91ab1cb6b98f23c931a544f198768c3a1 Mon Sep 17 00:00:00 2001 From: Stephen Freudenthaler Date: Wed, 3 Jun 2026 13:27:05 -0400 Subject: [PATCH 1/2] build: upgrade plugin examples to Java 25 runtime Brings the plugin seeds in line with dotCMS core, which now defaults to a Java 25 runtime (.sdkmanrc -> 25.0.2-ms, Microsoft build). - Add .sdkmanrc pinning java=25.0.2-ms to match core's build/runtime JDK - Bump maven.compiler.source/target (and release where present) to 25 across the root aggregator pom and all module poms (com.dotcms.servlet inherits from the parent and needed no change) - CI: setup-java -> java-version 25, distribution microsoft (was 21/temurin) in build-check, test-install-plugins, and test-on-dotcms-release workflows Verified: full reactor `./mvnw -DskipTests clean package` builds all 24 modules successfully on JDK 25 (maven-bundle-plugin 5.1.9 handles class file v69 with no changes needed). Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/build-check.yml | 6 +++--- .github/workflows/test-install-plugins.yml | 6 +++--- .github/workflows/test-on-dotcms-release.yml | 6 +++--- .sdkmanrc | 3 +++ com.dotcms.3rd.party/pom.xml | 4 ++-- com.dotcms.actionlet/pom.xml | 4 ++-- com.dotcms.aop/pom.xml | 4 ++-- com.dotcms.app.example/pom.xml | 4 ++-- com.dotcms.content.validation/pom.xml | 4 ++-- com.dotcms.contenttype/pom.xml | 4 ++-- com.dotcms.dynamic.skeleton/pom.xml | 4 ++-- com.dotcms.fixasset/pom.xml | 4 ++-- com.dotcms.hooks.pubsub/pom.xml | 4 ++-- com.dotcms.hooks.validations/pom.xml | 4 ++-- com.dotcms.hooks/pom.xml | 4 ++-- com.dotcms.job/pom.xml | 4 ++-- com.dotcms.portlet/pom.xml | 4 ++-- com.dotcms.pushpublish.listener/pom.xml | 4 ++-- com.dotcms.rest/pom.xml | 4 ++-- com.dotcms.ruleengine.velocityscriptingactionlet/pom.xml | 4 ++-- com.dotcms.ruleengine.visitoripconditionlet/pom.xml | 4 ++-- com.dotcms.simpleService/pom.xml | 4 ++-- com.dotcms.staticpublish.listener/pom.xml | 4 ++-- com.dotcms.tuckey/pom.xml | 4 ++-- com.dotcms.viewtool/pom.xml | 6 +++--- com.dotcms.webinterceptor/pom.xml | 4 ++-- pom.xml | 4 ++-- 27 files changed, 59 insertions(+), 56 deletions(-) create mode 100644 .sdkmanrc diff --git a/.github/workflows/build-check.yml b/.github/workflows/build-check.yml index e8232d2a..3e9eb28a 100644 --- a/.github/workflows/build-check.yml +++ b/.github/workflows/build-check.yml @@ -17,11 +17,11 @@ jobs: - name: Checkout Repository uses: actions/checkout@v4 - - name: Set up JDK 21 + - name: Set up JDK 25 uses: actions/setup-java@v4 with: - java-version: '21' - distribution: 'temurin' + java-version: '25' + distribution: 'microsoft' cache: maven - name: Build All Plugins diff --git a/.github/workflows/test-install-plugins.yml b/.github/workflows/test-install-plugins.yml index bc6b7a06..cf36240e 100644 --- a/.github/workflows/test-install-plugins.yml +++ b/.github/workflows/test-install-plugins.yml @@ -22,11 +22,11 @@ jobs: - name: Checkout Repository uses: actions/checkout@v4 - - name: Set up JDK 21 + - name: Set up JDK 25 uses: actions/setup-java@v4 with: - java-version: '21' - distribution: 'temurin' + java-version: '25' + distribution: 'microsoft' cache: maven - name: Build Plugins diff --git a/.github/workflows/test-on-dotcms-release.yml b/.github/workflows/test-on-dotcms-release.yml index 0d7a810a..21b85021 100644 --- a/.github/workflows/test-on-dotcms-release.yml +++ b/.github/workflows/test-on-dotcms-release.yml @@ -84,11 +84,11 @@ jobs: echo "pom.xml updated:" grep dotcms-core.version pom.xml - - name: Set up JDK 21 + - name: Set up JDK 25 uses: actions/setup-java@v4 with: - java-version: '21' - distribution: 'temurin' + java-version: '25' + distribution: 'microsoft' cache: maven - name: Build Plugins diff --git a/.sdkmanrc b/.sdkmanrc new file mode 100644 index 00000000..ed035fe4 --- /dev/null +++ b/.sdkmanrc @@ -0,0 +1,3 @@ +# sets the SDKMAN_JAVA_VERSION for dotCMS plugin examples +# this is the version of java used to build the plugins and matches the dotCMS core runtime +java=25.0.2-ms diff --git a/com.dotcms.3rd.party/pom.xml b/com.dotcms.3rd.party/pom.xml index fcbe5f31..5e9ef98e 100644 --- a/com.dotcms.3rd.party/pom.xml +++ b/com.dotcms.3rd.party/pom.xml @@ -16,8 +16,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/com.dotcms.actionlet/pom.xml b/com.dotcms.actionlet/pom.xml index f62c42cc..0a5cecf4 100644 --- a/com.dotcms.actionlet/pom.xml +++ b/com.dotcms.actionlet/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/com.dotcms.aop/pom.xml b/com.dotcms.aop/pom.xml index 84ee34fa..b81604f9 100644 --- a/com.dotcms.aop/pom.xml +++ b/com.dotcms.aop/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 1.8.10 diff --git a/com.dotcms.app.example/pom.xml b/com.dotcms.app.example/pom.xml index 2ad1c28e..d8f01bb5 100644 --- a/com.dotcms.app.example/pom.xml +++ b/com.dotcms.app.example/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/com.dotcms.content.validation/pom.xml b/com.dotcms.content.validation/pom.xml index 3c9546aa..00bddc58 100644 --- a/com.dotcms.content.validation/pom.xml +++ b/com.dotcms.content.validation/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/com.dotcms.contenttype/pom.xml b/com.dotcms.contenttype/pom.xml index f369b13a..503f85a7 100644 --- a/com.dotcms.contenttype/pom.xml +++ b/com.dotcms.contenttype/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/com.dotcms.dynamic.skeleton/pom.xml b/com.dotcms.dynamic.skeleton/pom.xml index 7d543217..a1bf647a 100644 --- a/com.dotcms.dynamic.skeleton/pom.xml +++ b/com.dotcms.dynamic.skeleton/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/com.dotcms.fixasset/pom.xml b/com.dotcms.fixasset/pom.xml index 90253e31..9b7b5bc9 100644 --- a/com.dotcms.fixasset/pom.xml +++ b/com.dotcms.fixasset/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/com.dotcms.hooks.pubsub/pom.xml b/com.dotcms.hooks.pubsub/pom.xml index 9d9865ca..09a7cf36 100644 --- a/com.dotcms.hooks.pubsub/pom.xml +++ b/com.dotcms.hooks.pubsub/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/com.dotcms.hooks.validations/pom.xml b/com.dotcms.hooks.validations/pom.xml index 20e04251..886fa3ab 100644 --- a/com.dotcms.hooks.validations/pom.xml +++ b/com.dotcms.hooks.validations/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/com.dotcms.hooks/pom.xml b/com.dotcms.hooks/pom.xml index 9226f595..c7047373 100644 --- a/com.dotcms.hooks/pom.xml +++ b/com.dotcms.hooks/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/com.dotcms.job/pom.xml b/com.dotcms.job/pom.xml index 6b82b7fc..df4c468f 100644 --- a/com.dotcms.job/pom.xml +++ b/com.dotcms.job/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/com.dotcms.portlet/pom.xml b/com.dotcms.portlet/pom.xml index d6de8ce8..33ba461a 100644 --- a/com.dotcms.portlet/pom.xml +++ b/com.dotcms.portlet/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/com.dotcms.pushpublish.listener/pom.xml b/com.dotcms.pushpublish.listener/pom.xml index e10a2610..40c96b12 100644 --- a/com.dotcms.pushpublish.listener/pom.xml +++ b/com.dotcms.pushpublish.listener/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/com.dotcms.rest/pom.xml b/com.dotcms.rest/pom.xml index a3b3a549..7d5009dc 100644 --- a/com.dotcms.rest/pom.xml +++ b/com.dotcms.rest/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/com.dotcms.ruleengine.velocityscriptingactionlet/pom.xml b/com.dotcms.ruleengine.velocityscriptingactionlet/pom.xml index 263e8d07..781775b8 100644 --- a/com.dotcms.ruleengine.velocityscriptingactionlet/pom.xml +++ b/com.dotcms.ruleengine.velocityscriptingactionlet/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/com.dotcms.ruleengine.visitoripconditionlet/pom.xml b/com.dotcms.ruleengine.visitoripconditionlet/pom.xml index 72d4aa3c..48167412 100644 --- a/com.dotcms.ruleengine.visitoripconditionlet/pom.xml +++ b/com.dotcms.ruleengine.visitoripconditionlet/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/com.dotcms.simpleService/pom.xml b/com.dotcms.simpleService/pom.xml index d537b5f6..9c2217ed 100644 --- a/com.dotcms.simpleService/pom.xml +++ b/com.dotcms.simpleService/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/com.dotcms.staticpublish.listener/pom.xml b/com.dotcms.staticpublish.listener/pom.xml index 1333998f..d442539b 100644 --- a/com.dotcms.staticpublish.listener/pom.xml +++ b/com.dotcms.staticpublish.listener/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/com.dotcms.tuckey/pom.xml b/com.dotcms.tuckey/pom.xml index a3576d74..cbea8e04 100644 --- a/com.dotcms.tuckey/pom.xml +++ b/com.dotcms.tuckey/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/com.dotcms.viewtool/pom.xml b/com.dotcms.viewtool/pom.xml index 53ed5017..e93a6642 100644 --- a/com.dotcms.viewtool/pom.xml +++ b/com.dotcms.viewtool/pom.xml @@ -17,9 +17,9 @@ UTF-8 - 11 - 11 - 11 + 25 + 25 + 25 diff --git a/com.dotcms.webinterceptor/pom.xml b/com.dotcms.webinterceptor/pom.xml index e7cdb4e8..17ae293d 100644 --- a/com.dotcms.webinterceptor/pom.xml +++ b/com.dotcms.webinterceptor/pom.xml @@ -17,8 +17,8 @@ UTF-8 - 11 - 11 + 25 + 25 diff --git a/pom.xml b/pom.xml index e79f9765..7d7dc9a4 100644 --- a/pom.xml +++ b/pom.xml @@ -13,8 +13,8 @@ UTF-8 - 21 - 21 + 25 + 25 26.03.27-01 From a08a15692b53b059404c11882327610891efef2c Mon Sep 17 00:00:00 2001 From: Stephen Freudenthaler Date: Mon, 15 Jun 2026 11:18:43 -0400 Subject: [PATCH 2/2] fix(osgi): suppress osgi.ee Require-Capability so bundles resolve on Java 25 The Java 25 upgrade (68dc2ff) made 21/22 plugins fail OSGi activation: they installed but never resolved (state INSTALLED/2 instead of ACTIVE/32). Root cause: maven-bundle-plugin 5.1.9 embeds bnd 6.3.1, which does not recognize class file major version 69 (Java 25). bnd therefore emitted Require-Capability: osgi.ee;filter:="(osgi.ee=UNKNOWN)" into each bundle manifest. The dotCMS Felix framework never exports an osgi.ee capability named UNKNOWN, so the resolver could not satisfy the requirement and the bundles stuck at INSTALLED. Only com.dotcms.viewtool passed because its maven-compiler-plugin pins 11, yielding class v55 which bnd maps to a valid osgi.ee=JavaSE;version=11. Fix: add bnd instruction <_noee>true to every bundle module, which suppresses generation of the osgi.ee Require-Capability header. Verified the full reactor builds on JDK 25 and no produced jar contains an osgi.ee Require-Capability line. Co-Authored-By: Claude Opus 4.8 --- com.dotcms.3rd.party/pom.xml | 1 + com.dotcms.actionlet/pom.xml | 1 + com.dotcms.aop/pom.xml | 1 + com.dotcms.app.example/pom.xml | 1 + com.dotcms.content.validation/pom.xml | 1 + com.dotcms.contenttype/pom.xml | 1 + com.dotcms.dynamic.skeleton/pom.xml | 1 + com.dotcms.fixasset/pom.xml | 1 + com.dotcms.hooks.pubsub/pom.xml | 1 + com.dotcms.hooks.validations/pom.xml | 1 + com.dotcms.hooks/pom.xml | 1 + com.dotcms.job/pom.xml | 1 + com.dotcms.portlet/pom.xml | 1 + com.dotcms.pushpublish.listener/pom.xml | 1 + com.dotcms.rest/pom.xml | 1 + com.dotcms.ruleengine.velocityscriptingactionlet/pom.xml | 1 + com.dotcms.ruleengine.visitoripconditionlet/pom.xml | 1 + com.dotcms.simpleService/pom.xml | 1 + com.dotcms.staticpublish.listener/pom.xml | 1 + com.dotcms.tuckey/pom.xml | 1 + com.dotcms.viewtool/pom.xml | 1 + com.dotcms.webinterceptor/pom.xml | 1 + 22 files changed, 22 insertions(+) diff --git a/com.dotcms.3rd.party/pom.xml b/com.dotcms.3rd.party/pom.xml index 5e9ef98e..4e4083a7 100644 --- a/com.dotcms.3rd.party/pom.xml +++ b/com.dotcms.3rd.party/pom.xml @@ -64,6 +64,7 @@ lib true .,{maven-dependencies} + <_noee>true diff --git a/com.dotcms.actionlet/pom.xml b/com.dotcms.actionlet/pom.xml index 0a5cecf4..f3a2a9f9 100644 --- a/com.dotcms.actionlet/pom.xml +++ b/com.dotcms.actionlet/pom.xml @@ -52,6 +52,7 @@ https://dotcms.com/ com.dotcms.osgi.actionlet.Activator * + <_noee>true diff --git a/com.dotcms.aop/pom.xml b/com.dotcms.aop/pom.xml index b81604f9..450d95cd 100644 --- a/com.dotcms.aop/pom.xml +++ b/com.dotcms.aop/pom.xml @@ -65,6 +65,7 @@ https://dotcms.com/ com.dotcms.plugin.aop.Activator * + <_noee>true diff --git a/com.dotcms.app.example/pom.xml b/com.dotcms.app.example/pom.xml index d8f01bb5..e7373bd7 100644 --- a/com.dotcms.app.example/pom.xml +++ b/com.dotcms.app.example/pom.xml @@ -63,6 +63,7 @@ org.apache.commons.io.input;version="[1.4,3)", * + <_noee>true diff --git a/com.dotcms.content.validation/pom.xml b/com.dotcms.content.validation/pom.xml index 00bddc58..309dece9 100644 --- a/com.dotcms.content.validation/pom.xml +++ b/com.dotcms.content.validation/pom.xml @@ -52,6 +52,7 @@ https://dotcms.com/ com.dotcms.content.validation.Activator * + <_noee>true diff --git a/com.dotcms.contenttype/pom.xml b/com.dotcms.contenttype/pom.xml index 503f85a7..e32bec84 100644 --- a/com.dotcms.contenttype/pom.xml +++ b/com.dotcms.contenttype/pom.xml @@ -62,6 +62,7 @@ https://dotcms.com/ com.dotcms.osgi.actionlet.Activator * + <_noee>true diff --git a/com.dotcms.dynamic.skeleton/pom.xml b/com.dotcms.dynamic.skeleton/pom.xml index a1bf647a..974cc822 100644 --- a/com.dotcms.dynamic.skeleton/pom.xml +++ b/com.dotcms.dynamic.skeleton/pom.xml @@ -53,6 +53,7 @@ * + <_noee>true diff --git a/com.dotcms.fixasset/pom.xml b/com.dotcms.fixasset/pom.xml index 9b7b5bc9..968401f2 100644 --- a/com.dotcms.fixasset/pom.xml +++ b/com.dotcms.fixasset/pom.xml @@ -53,6 +53,7 @@ com.dotcms.osgi.fixasset.Activator * * + <_noee>true diff --git a/com.dotcms.hooks.pubsub/pom.xml b/com.dotcms.hooks.pubsub/pom.xml index 09a7cf36..b34a7925 100644 --- a/com.dotcms.hooks.pubsub/pom.xml +++ b/com.dotcms.hooks.pubsub/pom.xml @@ -52,6 +52,7 @@ https://dotcms.com/ com.dotcms.osgi.hooks.Activator * + <_noee>true diff --git a/com.dotcms.hooks.validations/pom.xml b/com.dotcms.hooks.validations/pom.xml index 886fa3ab..b437255c 100644 --- a/com.dotcms.hooks.validations/pom.xml +++ b/com.dotcms.hooks.validations/pom.xml @@ -52,6 +52,7 @@ https://dotcms.com/ com.dotcms.osgi.hooks.Activator * + <_noee>true diff --git a/com.dotcms.hooks/pom.xml b/com.dotcms.hooks/pom.xml index c7047373..8ac6c1e5 100644 --- a/com.dotcms.hooks/pom.xml +++ b/com.dotcms.hooks/pom.xml @@ -52,6 +52,7 @@ https://dotcms.com/ com.dotcms.osgi.hooks.Activator * + <_noee>true diff --git a/com.dotcms.job/pom.xml b/com.dotcms.job/pom.xml index df4c468f..8bbf2a70 100644 --- a/com.dotcms.job/pom.xml +++ b/com.dotcms.job/pom.xml @@ -52,6 +52,7 @@ https://dotcms.com/ com.dotcms.osgi.job.Activator * + <_noee>true diff --git a/com.dotcms.portlet/pom.xml b/com.dotcms.portlet/pom.xml index 33ba461a..545926ff 100644 --- a/com.dotcms.portlet/pom.xml +++ b/com.dotcms.portlet/pom.xml @@ -52,6 +52,7 @@ https://dotcms.com/ com.dotcms.osgi.portlet.Activator * + <_noee>true diff --git a/com.dotcms.pushpublish.listener/pom.xml b/com.dotcms.pushpublish.listener/pom.xml index 40c96b12..372f9778 100644 --- a/com.dotcms.pushpublish.listener/pom.xml +++ b/com.dotcms.pushpublish.listener/pom.xml @@ -52,6 +52,7 @@ https://dotcms.com/ com.dotcms.pushpublish.Activator * + <_noee>true diff --git a/com.dotcms.rest/pom.xml b/com.dotcms.rest/pom.xml index 7d5009dc..e2f04bd8 100644 --- a/com.dotcms.rest/pom.xml +++ b/com.dotcms.rest/pom.xml @@ -52,6 +52,7 @@ https://dotcms.com/ com.dotcms.plugin.rest.Activator * + <_noee>true diff --git a/com.dotcms.ruleengine.velocityscriptingactionlet/pom.xml b/com.dotcms.ruleengine.velocityscriptingactionlet/pom.xml index 781775b8..0a5a60e8 100644 --- a/com.dotcms.ruleengine.velocityscriptingactionlet/pom.xml +++ b/com.dotcms.ruleengine.velocityscriptingactionlet/pom.xml @@ -76,6 +76,7 @@ https://dotcms.com/ com.dotcms.osgi.ruleengine.actionlet.Activator * + <_noee>true diff --git a/com.dotcms.ruleengine.visitoripconditionlet/pom.xml b/com.dotcms.ruleengine.visitoripconditionlet/pom.xml index 48167412..fb1dba90 100644 --- a/com.dotcms.ruleengine.visitoripconditionlet/pom.xml +++ b/com.dotcms.ruleengine.visitoripconditionlet/pom.xml @@ -82,6 +82,7 @@ https://dotcms.com/ com.dotcms.osgi.ruleengine.conditionlet.Activator * + <_noee>true diff --git a/com.dotcms.simpleService/pom.xml b/com.dotcms.simpleService/pom.xml index 9c2217ed..c658133b 100644 --- a/com.dotcms.simpleService/pom.xml +++ b/com.dotcms.simpleService/pom.xml @@ -53,6 +53,7 @@ com.dotcms.osgi.service.Activator com.dotcms.osgi.service * + <_noee>true diff --git a/com.dotcms.staticpublish.listener/pom.xml b/com.dotcms.staticpublish.listener/pom.xml index d442539b..aa3cbd48 100644 --- a/com.dotcms.staticpublish.listener/pom.xml +++ b/com.dotcms.staticpublish.listener/pom.xml @@ -52,6 +52,7 @@ https://dotcms.com/ com.dotcms.staticpublish.Activator * + <_noee>true diff --git a/com.dotcms.tuckey/pom.xml b/com.dotcms.tuckey/pom.xml index cbea8e04..50c9d691 100644 --- a/com.dotcms.tuckey/pom.xml +++ b/com.dotcms.tuckey/pom.xml @@ -55,6 +55,7 @@ com.dotcms.tuckey.Activator * + <_noee>true diff --git a/com.dotcms.viewtool/pom.xml b/com.dotcms.viewtool/pom.xml index e93a6642..f13ac844 100644 --- a/com.dotcms.viewtool/pom.xml +++ b/com.dotcms.viewtool/pom.xml @@ -74,6 +74,7 @@ https://dotcms.com/ com.dotcms.osgi.viewtools.Activator * + <_noee>true diff --git a/com.dotcms.webinterceptor/pom.xml b/com.dotcms.webinterceptor/pom.xml index 17ae293d..045214bf 100644 --- a/com.dotcms.webinterceptor/pom.xml +++ b/com.dotcms.webinterceptor/pom.xml @@ -52,6 +52,7 @@ https://dotcms.com/ com.dotcms.osgi.webinterceptors.Activator * + <_noee>true