Skip to content

Conversation

@dmihalcik-virtru
Copy link
Member

@dmihalcik-virtru dmihalcik-virtru commented Jan 21, 2026

I'm running 25 locally so I had claude sonnet do this upgrade for me in a background tab. It kinda seems random about the version updates, but they don't seem too problematic. LMK if you want me to manually check to make sure they are the latest or the most recent patch of their minor version.


Upgrade critical build dependencies to versions that support JDK 25 while maintaining Java 11 as the minimum target version (maven.compiler.release=11).

Root cause: Kotlin 2.1.0 does not support JDK 25's version format, and ByteBuddy 1.14.12 (used by Mockito) only supports Java up to version 23.

Changes made:

Root POM (pom.xml):

  • ByteBuddy: 1.14.12 → 1.17.0 (adds Java 25 class file support)
  • Kotlin stdlib: 2.1.20 → 2.3.0 (adds JDK 25 support)
  • maven-compiler-plugin: 3.8.0 → 3.13.0 (stable JDK 25 support)
  • maven-surefire-plugin: 3.0.0 → 3.5.0 (updated test runner)
  • JUnit BOM: 5.10.1 → 5.10.2 (resolves dependency conflicts)

SDK Module (sdk/pom.xml):

  • kotlin.version: 2.1.0 → 2.3.0 (adds JDK 25 support)
  • mockito-core: 5.2.0 → 5.11.0 (compatible with ByteBuddy 1.17.x)
  • mockito-junit-jupiter: 5.2.0 → 5.11.0
  • mockito-inline: removed (functionality merged into mockito-core in 5.x)
  • dokka-maven-plugin: 2.0.0 → 2.1.0 (adds JDK 25 support)

Verification:

  • Build: SUCCESS (all 4 modules built in 01:13 min)
  • Tests: PASSED (113 tests run, 0 failures, 0 errors, 2 skipped)
  • Maintains Java 11 backward compatibility
  • Kotlin compilation works without JavaVersion.parse errors
  • All Mockito-dependent tests pass with ByteBuddy 1.17.0

Breaking changes: None. The mockito-inline dependency removal does not affect functionality as its features are now part of mockito-core.

@dmihalcik-virtru dmihalcik-virtru requested review from a team as code owners January 21, 2026 19:47
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @dmihalcik-virtru, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request focuses on modernizing the project's build environment by upgrading several key dependencies to ensure compatibility with JDK 25, while explicitly maintaining backward compatibility with Java 11. The changes address specific limitations in older dependency versions, such as Kotlin's JDK 25 version format handling and ByteBuddy's Java version support, thereby enhancing the project's stability and future-proofing against newer Java releases.

Highlights

  • JDK 25 Compatibility: Critical build dependencies have been upgraded to ensure compatibility with JDK 25, addressing issues with older versions of Kotlin and ByteBuddy.
  • ByteBuddy Upgrade: ByteBuddy has been updated from version 1.14.12 to 1.17.0, adding support for Java 25 class files.
  • Kotlin Version Update: Kotlin stdlib and the kotlin.version property have been upgraded from 2.1.x to 2.3.0, providing full JDK 25 support.
  • Maven Plugin Updates: The maven-compiler-plugin was updated from 3.8.0 to 3.13.0 for stable JDK 25 support, and the maven-surefire-plugin from 3.0.0 to 3.5.0 for an updated test runner.
  • Mockito Dependency Refinement: Mockito-core and mockito-junit-jupiter have been upgraded from 5.2.0 to 5.11.0. The mockito-inline dependency has been removed as its functionality is now integrated into mockito-core in version 5.x.
  • JUnit BOM Update: The JUnit BOM has been updated from 5.10.1 to 5.10.2 to resolve potential dependency conflicts.
  • Dokka Plugin Upgrade: The dokka-maven-plugin has been updated from 2.0.0 to 2.1.0, adding JDK 25 support for documentation generation.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request effectively upgrades dependencies for JDK 25 compatibility. The changes are well-described and address the root causes. My review focuses on improving the maintainability of the POM files by suggesting the use of properties for dependency and plugin versions. This practice centralizes version management, reduces redundancy, and simplifies future updates, making the project easier to maintain in the long run.

pom.xml Outdated
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>5.10.1</version>
<version>5.10.2</version>
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

For better maintainability, consider defining the version of the JUnit BOM as a property (e.g., <junit-bom.version>) in the <properties> section and referencing it here.

Suggested change
<version>5.10.2</version>
<version>${junit-bom.version}</version>

pom.xml Outdated
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>2.1.20</version>
<version>2.3.0</version>
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

To centralize dependency management and ensure version consistency across modules, it's best practice to define the Kotlin version as a property in the root pom.xml. Please define a <kotlin.version> property in the <properties> section of this file and use it here. The redundant kotlin.version property in sdk/pom.xml should then be removed.

Suggested change
<version>2.3.0</version>
<version>${kotlin.version}</version>

pom.xml Outdated
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<version>3.13.0</version>
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

For better maintainability, consider defining the version of this plugin as a property (e.g., <maven-compiler-plugin.version>) in the <properties> section and referencing it here.

Suggested change
<version>3.13.0</version>
<version>${maven-compiler-plugin.version}</version>

pom.xml Outdated
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0</version>
<version>3.5.0</version>
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

For better maintainability, consider defining the version of this plugin as a property (e.g., <maven-surefire-plugin.version>) in the <properties> section and referencing it here.

Suggested change
<version>3.5.0</version>
<version>${maven-surefire-plugin.version}</version>

sdk/pom.xml Outdated
<jazzer.baseurl>
https://github.com/CodeIntelligenceTesting/jazzer/releases/download/v${jazzer.version}</jazzer.baseurl>
<kotlin.version>2.1.0</kotlin.version>
<kotlin.version>2.3.0</kotlin.version>
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

This kotlin.version property should be defined in the parent pom.xml and inherited by this module to ensure version consistency across the project. Please remove this property definition from the sdk module's POM after defining it in the root POM.

Comment on lines 255 to 265
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>5.2.0</version>
<version>5.11.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>5.2.0</version>
<scope>test</scope>
</dependency>
<!-- Mockito Inline Dependency for mocking final classes -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>5.2.0</version>
<version>5.11.0</version>
<scope>test</scope>
</dependency>
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

To improve maintainability and ensure consistent versions for Mockito artifacts, it's a good practice to define a mockito.version property in the parent pom.xml's <properties> section and use it for all Mockito dependencies. This also makes future upgrades easier.

Suggested change
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>5.2.0</version>
<version>5.11.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>5.2.0</version>
<scope>test</scope>
</dependency>
<!-- Mockito Inline Dependency for mocking final classes -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>5.2.0</version>
<version>5.11.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>

sdk/pom.xml Outdated
<groupId>org.jetbrains.dokka</groupId>
<artifactId>dokka-maven-plugin</artifactId>
<version>2.0.0</version>
<version>2.1.0</version>
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

For better maintainability, consider defining the version of this plugin as a property (e.g., <dokka-maven-plugin.version>) in the <properties> section (preferably in the parent POM) and referencing it here.

Suggested change
<version>2.1.0</version>
<version>${dokka-maven-plugin.version}</version>

@dmihalcik-virtru dmihalcik-virtru changed the title chore(deps): upgrade deps for JDK 25 compatibility fix(sdk): upgrade deps for JDK 25 compatibility Jan 21, 2026
@dmihalcik-virtru
Copy link
Member Author

It sounds like support for kotlin 2.3.x is coming to codeql in a few weeks: github/codeql#20661

dmihalcik-virtru and others added 3 commits January 22, 2026 10:44
Upgrade critical build dependencies to versions that support JDK 25 while
maintaining Java 11 as the minimum target version (maven.compiler.release=11).

Root cause: Kotlin 2.1.0 does not support JDK 25's version format, and
ByteBuddy 1.14.12 (used by Mockito) only supports Java up to version 23.

Changes made:

Root POM (pom.xml):
- ByteBuddy: 1.14.12 → 1.17.0 (adds Java 25 class file support)
- Kotlin stdlib: 2.1.20 → 2.3.0 (adds JDK 25 support)
- maven-compiler-plugin: 3.8.0 → 3.13.0 (stable JDK 25 support)
- maven-surefire-plugin: 3.0.0 → 3.5.0 (updated test runner)
- JUnit BOM: 5.10.1 → 5.10.2 (resolves dependency conflicts)

SDK Module (sdk/pom.xml):
- kotlin.version: 2.1.0 → 2.3.0 (adds JDK 25 support)
- mockito-core: 5.2.0 → 5.11.0 (compatible with ByteBuddy 1.17.x)
- mockito-junit-jupiter: 5.2.0 → 5.11.0
- mockito-inline: removed (functionality merged into mockito-core in 5.x)
- dokka-maven-plugin: 2.0.0 → 2.1.0 (adds JDK 25 support)

Verification:
- Build: SUCCESS (all 4 modules built in 01:13 min)
- Tests: PASSED (113 tests run, 0 failures, 0 errors, 2 skipped)
- Maintains Java 11 backward compatibility
- Kotlin compilation works without JavaVersion.parse errors
- All Mockito-dependent tests pass with ByteBuddy 1.17.0

Breaking changes: None. The mockito-inline dependency removal does not
affect functionality as its features are now part of mockito-core.
Implement Gemini Code Assist suggestions to improve maintainability
by centralizing dependency and plugin version management.

Changes:

Root POM (pom.xml):
- Added properties section with version management:
  - kotlin.version: 2.3.0
  - junit-bom.version: 5.10.2
  - mockito.version: 5.11.0
  - maven-compiler-plugin.version: 3.13.0
  - maven-surefire-plugin.version: 3.5.0
  - dokka-maven-plugin.version: 2.1.0
- Updated all hardcoded versions to use ${property.name} syntax

SDK Module (sdk/pom.xml):
- Removed duplicate kotlin.version property (now inherited from parent)
- Updated mockito-core to use ${mockito.version}
- Updated mockito-junit-jupiter to use ${mockito.version}
- Updated dokka-maven-plugin to use ${dokka-maven-plugin.version}

Benefits:
- Single source of truth for dependency versions
- Easier future version updates
- Ensures version consistency across modules
- Follows Maven best practices

Verification:
- Build: SUCCESS (all 4 modules)
- Tests: PASSED
- All version properties resolve correctly

Addresses all medium-priority suggestions from Gemini Code Assist PR review.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Update CodeQL action from unpinned @V3 to pinned version 4.31.10
(commit SHA: cdefb33c0f6224e58673d9004f47f7cb3e328b89).

Changes:
- github/codeql-action/init: v3 → v4.31.10 (pinned)
- github/codeql-action/autobuild: v3 → v4.31.10 (pinned)
- github/codeql-action/analyze: v3 → v4.31.10 (pinned)

Benefits:
- Security: Pinning to SHA ensures immutable action version
- Latest features: CodeQL bundle updated to 2.23.9
- Transparency: Version tag in comments for readability

Released: January 12, 2026
Changelog: https://github.com/github/codeql-action/blob/main/CHANGELOG.md

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@sonarqubecloud
Copy link

@github-actions
Copy link

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