Skip to content

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

Merged
Evelina02 merged 3 commits intodevelopfrom
EPMRPP-111932-java-25
Feb 11, 2026
Merged

EPMRPP-111932 || Upgrade Java 21 → 25#112
Evelina02 merged 3 commits intodevelopfrom
EPMRPP-111932-java-25

Conversation

@Evelina02
Copy link
Contributor

@Evelina02 Evelina02 commented Feb 6, 2026

Summary by CodeRabbit

  • Chores
    • Updated Java runtime requirement from version 21 to 25.
    • Updated Gradle wrapper to version 9.3.1 and Spring Boot to 3.5.9.
    • Enhanced build toolchain, plugins, and dependencies for improved compatibility.

@coderabbitai
Copy link

coderabbitai bot commented Feb 6, 2026

Warning

Rate limit exceeded

@Evelina02 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 5 minutes and 43 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

Walkthrough

The PR updates Java versions from 21 to 25 across CI workflows and build configurations, upgrades Gradle wrapper from 8.10.2 to 9.3.1, adds the Shadow JAR plugin, updates Spring Boot to 3.5.9, modernizes shell scripts for POSIX compliance, and refactors Node/UI build configuration to use Gradle layout APIs.

Changes

Cohort / File(s) Summary
Java Version Updates
.github/workflows/build.yml, .github/workflows/manually-release.yml, .github/workflows/release.yml, project-properties.gradle
Updated Java/JDK version from 21 to 25; upgraded setup-java action from v2 to v4 with temurin distribution in some workflows.
Gradle Build Configuration
build.gradle
Added com.gradleup.shadow v9.3.1 plugin; updated node-gradle from 2.2.1 to 7.1.0; switched task wiring to use shadowJar; updated repository syntax to property-style; bumped Mockito JUnit Jupiter to 5.21.0; added junit-platform-launcher; updated ReportPortal dependency hash; corrected shadowJar zip64 flag syntax.
Gradle Wrapper & Dependencies
gradle.properties, gradle/wrapper/gradle-wrapper.properties
Bumped Spring Boot from 3.4.11 to 3.5.9; updated Gradle wrapper distribution from 8.10.2 to 9.3.1.
Unix Wrapper Script
gradlew
Significant refactoring for POSIX compliance: improved symlink resolution, modernized app path handling, replaced legacy Java checks, rewrote file descriptor management, refactored Windows/Cygwin path conversion, and streamlined argument handling with eval-based reconstruction.
Windows Batch Script
gradlew.bat
Restructured startup sequence from two-stage to direct execution; improved APP_HOME resolution; changed Gradle wrapper invocation from classpath-based to -jar invocation; modernized Java detection and error reporting.
Node Build Configuration
ui.gradle
Migrated to Gradle layout APIs: replaced workDir with layout.buildDirectory.dir('ui'); added explicit npmWorkDir and nodeProjectDir; removed nodeModulesDir.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 From Java twenty-one to five and twenty we hop,
The Gradle wrapper bounds with renewed, modern stop,
Scripts now speak POSIX, with paths resolved true,
Shadow JARs shimmer—old tools replaced anew! ✨

🚥 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 concisely summarizes the main change: upgrading Java from version 21 to 25, which is reflected across workflow files, build configurations, and gradle properties.
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: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
project-properties.gradle (1)

10-10: ⚠️ Potential issue | 🟠 Major

Update $buildDir to layout.buildDirectory — deprecated in Gradle 8, still needs migration for future compatibility.

$buildDir is deprecated as of Gradle 8.0 and should be replaced with layout.buildDirectory. While it's not yet removed in Gradle 9.3.1, it's targeted for removal in Gradle 10, and updating now ensures forward compatibility.

There are multiple occurrences across the codebase:

  • project-properties.gradle:10: pluginsDir = "$buildDir/plugins"
  • build.gradle:61, 62, 71: Multiple uses in source directories and output configurations
🔧 Proposed fix

For project-properties.gradle:10:

-    pluginsDir = "$buildDir/plugins"
+    pluginsDir = layout.buildDirectory.dir("plugins").get().asFile.path

For build.gradle, update similarly:

-    srcDirs "$buildDir/generated/src/main/java"
+    srcDirs layout.buildDirectory.dir("generated/src/main/java").get().asFile

Or, if the API accepts a Provider<Directory>, omit .get().asFile.path to keep things lazy (preferred):

-    pluginsDir = "$buildDir/plugins"
+    pluginsDir = layout.buildDirectory.dir("plugins")
build.gradle (1)

58-65: ⚠️ Potential issue | 🔴 Critical

$buildDir is removed in Gradle 9.x — this will break the build.

The project.buildDir property (and the $buildDir shorthand) was deprecated in Gradle 8.x and removed in Gradle 9.x. Since this PR upgrades the Gradle wrapper to 9.3.1, references to $buildDir on lines 61, 62, and 71 will fail at build time.

Migrate to layout.buildDirectory:

Suggested fix
 sourceSets {
     main {
         java {
-            srcDirs "$buildDir/generated/src/main/java"
-            exclude("$buildDir/generated/src/main/java/com/epam/reportportal/api/jira/MyselfApi.java")
+            srcDirs layout.buildDirectory.dir("generated/src/main/java")
+            exclude("**/com/epam/reportportal/api/jira/MyselfApi.java")
         }
     }
 }

And for the generateJiraApi task (line 71):

 tasks.register('generateJiraApi', GenerateTask) {
     generatorName.set("java")
     inputSpec.set("$rootDir/src/main/resources/openapi/swagger-v3.v3.json")
-    outputDir.set("$buildDir/generated")
+    outputDir.set(layout.buildDirectory.dir("generated").get().asFile.absolutePath)
     configFile.set("$rootDir/src/main/resources/openapi/config.json")
     ignoreFileOverride = "${projectDir.path}/.openapi-generator-ignore"
     skipOverwrite.set(true)
 }
🤖 Fix all issues with AI agents
In `@ui.gradle`:
- Around line 5-7: The npmWorkDir is currently pointed at the source tree
(npmWorkDir = file("${project.rootDir}/ui")) which causes npm to install
artifacts into source; change npmWorkDir to use the build directory instead
(same pattern as workDir using layout.buildDirectory.dir('ui').get().asFile)
while keeping nodeProjectDir pointed at the source; update the npmWorkDir
assignment to reference the build directory so generated npm distribution files
are written to the build cache rather than ui/ in source.
🧹 Nitpick comments (4)
.github/workflows/manually-release.yml (1)

27-27: actions/checkout@v2 is outdated — consider upgrading to @v4.

While the setup-java action was correctly updated to @v4, actions/checkout is still on @v2. v4 uses Node 20 (v2 uses Node 12, which is EOL) and has performance improvements for large repos.

♻️ Proposed fix
      - name: Checkout repository
-       uses: actions/checkout@v2
+       uses: actions/checkout@v4
.github/workflows/release.yml (1)

22-22: actions/checkout@v2 is outdated — same as in manually-release.yml.

♻️ Proposed fix
      - name: Checkout repository
-       uses: actions/checkout@v2
+       uses: actions/checkout@v4
build.gradle (2)

23-23: Redundant URL override inside mavenCentral.

mavenCentral() already points to https://repo1.maven.org/maven2. Wrapping it in a configuration block to set the same URL is unnecessary. Simplify to just mavenCentral().

Suggested fix
 repositories {
-    mavenCentral { url = "https://repo1.maven.org/maven2" }
+    mavenCentral()
     maven { url = "https://packages.atlassian.com/maven/repository/public" }

40-41: Pinned to a short commit hash — consider using a more descriptive reference.

The service-api dependency is pinned to commit 7044a29. This is a 7-character short hash, which could become ambiguous as the repo grows. Consider using the full SHA or a tagged version/branch reference for clarity and traceability.

@Evelina02 Evelina02 merged commit e284881 into develop Feb 11, 2026
4 of 5 checks passed
@Evelina02 Evelina02 deleted the EPMRPP-111932-java-25 branch February 11, 2026 13:15
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.

3 participants