Skip to content

EPMRPP-111932 || Upgrade Java 21 → 25#34

Merged
Evelina02 merged 1 commit intodevelopfrom
EPMRPP-111932-java-25
Feb 11, 2026
Merged

EPMRPP-111932 || Upgrade Java 21 → 25#34
Evelina02 merged 1 commit intodevelopfrom
EPMRPP-111932-java-25

Conversation

@Evelina02
Copy link
Contributor

@Evelina02 Evelina02 commented Feb 6, 2026

Summary by CodeRabbit

  • Chores
    • Upgraded Java requirement from version 21 to 25
    • Updated Gradle build system to version 9.3.1
    • Modernized CI/CD workflows with latest GitHub Actions and improved build tools
    • Updated Spring Boot and testing dependencies to latest versions
    • Enhanced build script compatibility and performance

@coderabbitai
Copy link

coderabbitai bot commented Feb 6, 2026

Walkthrough

This PR updates the project's Java version from 21 to 25, upgrades the Gradle wrapper from 8.10.2 to 9.3.1, and updates related build dependencies and configuration. It includes workflow updates, dependency version bumps, plugin upgrades, and comprehensive rewrites of shell scripts for POSIX compliance.

Changes

Cohort / File(s) Summary
GitHub Workflows - JDK Updates
.github/workflows/build.yml, .github/workflows/manually-release.yml, .github/workflows/release.yml
Updated JDK version from 21 to 25 across all workflows. The manually-release and release workflows also upgraded setup-java from v2 to v4 and changed distribution from 'adopt' to 'temurin'.
Build Configuration
build.gradle, gradle.properties, project-properties.gradle
Updated Spring Boot from 3.4.2 to 3.5.9, added Shadow JAR plugin (9.3.1), upgraded Node Gradle plugin from 2.2.1 to 7.1.0, updated JUnit test configuration to use testRuntimeOnly, and migrated to Gradle's layout API for directory paths. Also updated Mockito (5.14.2 → 5.21.0) and ReportPortal service-api dependencies.
Gradle Wrapper & Scripts
gradle/wrapper/gradle-wrapper.properties, gradlew, gradlew.bat
Updated Gradle distribution from 8.10.2 to 9.3.1. Completely rewrote gradlew shell script to POSIX-compliant form with improved symlink resolution, path handling, and argument processing. Updated gradlew.bat to use jar-based invocation and improved error handling with SPDX license headers on both scripts.

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~100+ minutes

Possibly related PRs

Suggested reviewers

  • pbortnik
  • grabsefx

Poem

🐰 Hop along with Java's leap to twenty-five,
Where Gradle nine now helps us build and thrive!
Scripts rewritten, POSIX-clean and bright,
Dependencies refreshed, the build feels light!
A springtime update makes workflows alive! 🌱

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and directly summarizes the main change: upgrading Java from version 21 to 25 across the project's workflows, build configuration, and gradle wrapper.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch EPMRPP-111932-java-25

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In @.github/workflows/manually-release.yml:
- Line 27: The workflow step using the checkout action should be updated from
actions/checkout@v2 to actions/checkout@v4; locate the step that contains "uses:
actions/checkout@v2" and change it to "uses: actions/checkout@v4", then run or
validate the workflow to ensure there are no breaking input/behavior changes
with actions/checkout (e.g., any custom inputs remain compatible) before pushing
the change.

In `@build.gradle`:
- Around line 14-16: The workDir and npmWorkDir assignments eagerly resolve
DirectoryProperty via .get().asFile, which breaks Gradle's lazy configuration;
update the assignments for workDir and npmWorkDir to use lazy-compatible file()
calls derived from layout.buildDirectory (e.g., use
file("${layout.buildDirectory}/ui") and file("${layout.buildDirectory}/npm"))
while leaving nodeProjectDir (file("${project.rootDir}/ui")) unchanged so the
node-gradle plugin receives DirectoryProperty-compatible values and preserves
configuration avoidance.
🧹 Nitpick comments (2)
build.gradle (1)

32-35: mavenCentral { url = "..." } is redundant — consider simplifying to mavenCentral().

mavenCentral() already points to https://repo1.maven.org/maven2. Overriding the URL within the configuration closure is a no-op. In Gradle 9.x, configuring well-known repositories this way may trigger deprecation warnings.

♻️ Suggested simplification
-    mavenCentral { url = "https://repo1.maven.org/maven2" }
+    mavenCentral()
.github/workflows/release.yml (1)

22-22: Consider bumping actions/checkout from v2 to v5 for consistency with build.yml.

build.yml already uses actions/checkout@v5, but this workflow still references @v2. Older major versions run on deprecated Node runtimes and will eventually stop working on GitHub-hosted runners. Since you're already updating this file, it would be a low-risk fix:

Proposed fix
-        uses: actions/checkout@v2
+        uses: actions/checkout@v5

@@ -26,11 +26,11 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v2
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

actions/checkout@v2 is outdated — update to v4.

actions/checkout@v2 uses the deprecated Node.js 12 runtime and is missing security fixes from v3/v4. Since actions/setup-java was already updated to @v4, this should be updated as well for consistency and security.

♻️ Suggested fix
-        uses: actions/checkout@v2
+        uses: actions/checkout@v4
🧰 Tools
🪛 actionlint (1.7.10)

[error] 27-27: the runner of "actions/checkout@v2" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🤖 Prompt for AI Agents
In @.github/workflows/manually-release.yml at line 27, The workflow step using
the checkout action should be updated from actions/checkout@v2 to
actions/checkout@v4; locate the step that contains "uses: actions/checkout@v2"
and change it to "uses: actions/checkout@v4", then run or validate the workflow
to ensure there are no breaking input/behavior changes with actions/checkout
(e.g., any custom inputs remain compatible) before pushing the change.

Comment on lines +14 to +16
workDir = layout.buildDirectory.dir('ui').get().asFile
npmWorkDir = layout.buildDirectory.dir('npm').get().asFile
nodeProjectDir = file("${project.rootDir}/ui")
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

cat -n build.gradle | head -30

Repository: reportportal/plugin-slack

Length of output: 1092


🏁 Script executed:

# Check gradle plugin versions
rg -n "id|plugins|node" build.gradle | head -20

Repository: reportportal/plugin-slack

Length of output: 483


🏁 Script executed:

# Check if there's a gradle wrapper or properties file that defines plugin versions
fd -e "gradle.properties" -e "settings.gradle" | xargs cat 2>/dev/null

Repository: reportportal/plugin-slack

Length of output: 51


🌐 Web query:

node-gradle plugin 7.x Property<Directory> workDir npmWorkDir API

💡 Result:

In node-gradle / gradle-node-plugin 7.x (com.github.node-gradle.node), the node { ... } extension exposes:

  • workDir: the directory where the downloaded Node.js distribution is unpacked
  • npmWorkDir: the directory where npm is installed (when using a specific npmVersion)

In Gradle terms these are DirectoryProperty (i.e., a Property<Directory>-style API), so in Kotlin DSL you typically configure them with .set(...) (or assign a File, which Gradle can coerce).

Kotlin DSL (recommended style)

node {
  workDir.set(layout.projectDirectory.dir(".gradle/node/nodejs"))
  npmWorkDir.set(layout.projectDirectory.dir(".gradle/node/npm"))
}

Groovy DSL (common in examples)

node {
  workDir = file("$buildDir/nodejs")
  npmWorkDir = file("$buildDir/npm")
}

Example usage in a real build (Apache Solr) sets both workDir and npmWorkDir explicitly. [1]

Related: node-gradle’s task API uses DirectoryProperty for task working directories as well (e.g., NodeTask.getWorkingDir()). [2]

Sources: Apache Solr build config example for workDir/npmWorkDir [1]; node-gradle plugin task API showing DirectoryProperty usage [2]; plugin portal entry for node-gradle 7.x line. [3]

[1] https://apache.googlesource.com/solr/%2B/refs/heads/main/gradle/node.gradle
[2] https://node-gradle.github.io/gradle-node-plugin/com/github/gradle/node/task/NodeTask.html
[3] https://plugins.gradle.org/plugin/com.github.node-gradle.node


Simplify node-gradle property assignments to use lazy evaluation.

The node-gradle 7.1.0 plugin uses DirectoryProperty for workDir and npmWorkDir. The current .get().asFile pattern eagerly resolves these lazy properties, bypassing Gradle's configuration avoidance optimization. Simplify to idiomatic Groovy DSL:

workDir = file("${layout.buildDirectory}/ui")
npmWorkDir = file("${layout.buildDirectory}/npm")

This maintains type compatibility while preserving lazy evaluation.

🤖 Prompt for AI Agents
In `@build.gradle` around lines 14 - 16, The workDir and npmWorkDir assignments
eagerly resolve DirectoryProperty via .get().asFile, which breaks Gradle's lazy
configuration; update the assignments for workDir and npmWorkDir to use
lazy-compatible file() calls derived from layout.buildDirectory (e.g., use
file("${layout.buildDirectory}/ui") and file("${layout.buildDirectory}/npm"))
while leaving nodeProjectDir (file("${project.rootDir}/ui")) unchanged so the
node-gradle plugin receives DirectoryProperty-compatible values and preserves
configuration avoidance.

@Evelina02 Evelina02 merged commit b66ca8e into develop Feb 11, 2026
4 of 5 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.

2 participants