This is an automated email from the ASF dual-hosted git repository.

jshao pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/main by this push:
     new a02fdd0e4c [#7922] feat (server):  Client-related releases jars 
compatible with JDK 8 (#7877)
a02fdd0e4c is described below

commit a02fdd0e4c5c48292d6f36a16cee38cb772e95ab
Author: Yuhui <[email protected]>
AuthorDate: Tue Aug 26 15:38:25 2025 +0800

    [#7922] feat (server):  Client-related releases jars compatible with JDK 8 
(#7877)
    
    ### What changes were proposed in this pull request?
    
    Make client-related releases jars compatible with JDK 8
    
    ### Why are the changes needed?
    
    Fix: #7922
    
    ### Does this PR introduce _any_ user-facing change?
    
    Yes, Client and common modules support JDK8 runtime
    
    ### How was this patch tested?
    
    UT and IT
---
 .github/workflows/build.yml                        |  3 +-
 build.gradle.kts                                   | 96 +++++++++++++++++-----
 bundles/aliyun/build.gradle.kts                    |  6 +-
 bundles/aws/build.gradle.kts                       |  6 +-
 bundles/azure/build.gradle.kts                     |  5 +-
 bundles/gcp/build.gradle.kts                       |  7 +-
 catalogs/catalog-common/build.gradle.kts           |  2 +
 .../credential/config/AzureCredentialConfig.java   |  0
 .../credential/config/GCSCredentialConfig.java     |  0
 .../credential/config/OSSCredentialConfig.java     |  0
 .../credential/config/S3CredentialConfig.java      |  0
 clients/client-java/build.gradle.kts               |  4 +-
 common/build.gradle.kts                            |  2 +
 .../src/main/java/org/apache/gravitino/Config.java |  0
 .../org/apache/gravitino/config/ConfigBuilder.java |  0
 .../apache/gravitino/config/ConfigConstants.java   |  0
 .../org/apache/gravitino/config/ConfigEntry.java   |  0
 .../gravitino/credential/CredentialContext.java    |  0
 .../gravitino/credential/CredentialProvider.java   |  0
 .../credential/PathBasedCredentialContext.java     | 17 ++++
 dev/release/release-build.sh                       |  4 +-
 docs/how-to-build.md                               | 26 ++----
 flink-connector/flink/build.gradle.kts             |  4 -
 gradle.properties                                  |  4 -
 gradle/libs.versions.toml                          |  2 +
 spark-connector/spark-common/build.gradle.kts      |  4 +-
 26 files changed, 129 insertions(+), 63 deletions(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index fa22041983..c04e90f5c3 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -63,7 +63,8 @@ jobs:
           cache: 'gradle'
 
       - name: Build with Gradle
-        run: ./gradlew build -x test -PjdkVersion=8
+        run: |
+          ./gradlew release -x test
 
   # To check the spark-connector is compatible with scala2.13
   spark-connector-build:
diff --git a/build.gradle.kts b/build.gradle.kts
index 0d4402670e..7e5d5c75b4 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -41,17 +41,13 @@ plugins {
   alias(libs.plugins.gradle.extensions)
   alias(libs.plugins.node) apply false
 
-  // Spotless version < 6.19.0 
(https://github.com/diffplug/spotless/issues/1819) has an issue
-  // running against JDK21, but we cannot upgrade the spotless to 6.19.0 or 
later since it only
-  // support JDK11+. So we don't support JDK21 and thrown an exception for now.
-  if (JavaVersion.current() >= JavaVersion.VERSION_1_8 &&
-    JavaVersion.current() <= JavaVersion.VERSION_17
-  ) {
+  // Spotless version < 6.19.0 
(https://github.com/diffplug/spotless/issues/1819) has an issue running against 
JDK21.
+  if (JavaVersion.current() == JavaVersion.VERSION_17) {
     alias(libs.plugins.spotless)
   } else {
     throw GradleException(
       "The Gravitino Gradle toolchain currently does not support " +
-        "Java version ${JavaVersion.current()}. Please use JDK versions 8 
through 17."
+        "Java version ${JavaVersion.current()}. Please use JDK version 17."
     )
   }
 
@@ -64,21 +60,12 @@ plugins {
   alias(libs.plugins.errorprone)
 }
 
-if (extra["jdkVersion"] !in listOf("8", "11", "17")) {
-  throw GradleException(
-    "The Gravitino Gradle toolchain currently does not support building with " 
+
-      "Java version ${extra["jdkVersion"]}. Please use JDK versions 8, 11 or 
17."
-  )
-}
-
 val scalaVersion: String = project.properties["scalaVersion"] as? String ?: 
extra["defaultScalaVersion"].toString()
 if (scalaVersion !in listOf("2.12", "2.13")) {
   throw GradleException("Scala version $scalaVersion is not supported.")
 }
 
-project.extra["extraJvmArgs"] = if (extra["jdkVersion"] in listOf("8", "11")) {
-  listOf()
-} else {
+project.extra["extraJvmArgs"] =
   listOf(
     "-XX:+IgnoreUnrecognizedVMOptions",
     "--add-opens", "java.base/java.io=ALL-UNNAMED",
@@ -103,7 +90,6 @@ project.extra["extraJvmArgs"] = if (extra["jdkVersion"] in 
listOf("8", "11")) {
     "--add-opens", "java.base/sun.util.calendar=ALL-UNNAMED",
     "--add-opens", "java.security.jgss/sun.security.krb5=ALL-UNNAMED"
   )
-}
 
 val pythonVersion: String = project.properties["pythonVersion"] as? String ?: 
project.extra["pythonVersion"].toString()
 project.extra["pythonVersion"] = pythonVersion
@@ -273,6 +259,64 @@ subprojects {
     mavenLocal()
   }
 
+  fun compatibleWithJDK8(project: Project): Boolean {
+    val isReleaseRun = gradle.startParameter.taskNames.any { it == "release" 
|| it == "publish" || it == "publishToMavenLocal" }
+    if (!isReleaseRun) {
+      return false
+    }
+
+    val name = project.name.lowercase()
+    val path = project.path.lowercase()
+
+    if (path.startsWith(":client") ||
+      path.startsWith(":spark-connector") ||
+      path.startsWith(":flink-connector") ||
+      path.startsWith(":bundles")
+    ) {
+      return true
+    }
+
+    if (name == "api" || name == "common" ||
+      name == "catalog-common" || name == "hadoop-common"
+    ) {
+      return true
+    }
+
+    return false
+  }
+
+  tasks.register("printJvm") {
+    group = "help"
+    description = "print JVM information"
+
+    doLast {
+      val compileJvmVersion = 
tasks.withType<JavaCompile>().firstOrNull()?.javaCompiler?.get()
+        ?.metadata?.languageVersion?.asInt() ?: "undefined"
+
+      val testJvmVersion = 
tasks.withType<Test>().firstOrNull()?.javaLauncher?.get()
+        ?.metadata?.languageVersion?.asInt() ?: "undefined"
+
+      val testJvmArgs = tasks.withType<Test>().firstOrNull()?.jvmArgs ?: 
listOf()
+
+      val targetJvmVersion = (java.targetCompatibility?.majorVersion ?: 
"undefined")
+
+      val sourceJvmVersion = (java.sourceCompatibility?.majorVersion ?: 
"undefined")
+
+      println(
+        """
+              |=== ${project.name} JVM information===
+              | project path: ${project.path}
+              | JVM for compile: $compileJvmVersion
+              | JVM for test: $testJvmVersion
+              | JVM test args: $testJvmArgs
+              | target JVM version: $targetJvmVersion
+              | source JVM version: $sourceJvmVersion
+              |==================================
+        """.trimMargin()
+      )
+    }
+  }
+
   java {
     toolchain {
       // Some JDK vendors like Homebrew installed OpenJDK 17 have problems in 
building trino-connector:
@@ -284,8 +328,12 @@ subprojects {
           vendor.set(JvmVendorSpec.AMAZON)
         }
         languageVersion.set(JavaLanguageVersion.of(17))
+      } else if (compatibleWithJDK8(project)) {
+        languageVersion.set(JavaLanguageVersion.of(17))
+        sourceCompatibility = JavaVersion.VERSION_1_8
+        targetCompatibility = JavaVersion.VERSION_1_8
       } else {
-        
languageVersion.set(JavaLanguageVersion.of(extra["jdkVersion"].toString().toInt()))
+        languageVersion.set(JavaLanguageVersion.of(17))
       }
     }
   }
@@ -1022,3 +1070,13 @@ fun checkOrbStackStatus() {
 }
 
 printDockerCheckInfo()
+
+tasks.register("release") {
+  group = "release"
+  description = "Builds and package a release version."
+  doFirst {
+    println("Releasing project...")
+  }
+
+  dependsOn(subprojects.map { it.tasks.named("build") })
+}
diff --git a/bundles/aliyun/build.gradle.kts b/bundles/aliyun/build.gradle.kts
index ccf4378f9c..a79aa1ce04 100644
--- a/bundles/aliyun/build.gradle.kts
+++ b/bundles/aliyun/build.gradle.kts
@@ -26,13 +26,13 @@ plugins {
 
 dependencies {
   compileOnly(project(":api"))
-  compileOnly(project(":catalogs:catalog-common"))
-  compileOnly(project(":catalogs:catalog-fileset"))
-  compileOnly(project(":core"))
   compileOnly(libs.hadoop3.client.api)
   compileOnly(libs.hadoop3.client.runtime)
   compileOnly(libs.hadoop3.oss)
 
+  implementation(project(":common")) {
+    exclude("*")
+  }
   implementation(project(":catalogs:catalog-common")) {
     exclude("*")
   }
diff --git a/bundles/aws/build.gradle.kts b/bundles/aws/build.gradle.kts
index c284839b01..b506847643 100644
--- a/bundles/aws/build.gradle.kts
+++ b/bundles/aws/build.gradle.kts
@@ -26,13 +26,13 @@ plugins {
 
 dependencies {
   compileOnly(project(":api"))
-  compileOnly(project(":catalogs:catalog-common"))
-  compileOnly(project(":catalogs:catalog-fileset"))
-  compileOnly(project(":core"))
   compileOnly(libs.hadoop3.aws)
   compileOnly(libs.hadoop3.client.api)
   compileOnly(libs.hadoop3.client.runtime)
 
+  implementation(project(":common")) {
+    exclude("*")
+  }
   implementation(project(":catalogs:catalog-common")) {
     exclude("*")
   }
diff --git a/bundles/azure/build.gradle.kts b/bundles/azure/build.gradle.kts
index b03138628a..2bc0e1fa4c 100644
--- a/bundles/azure/build.gradle.kts
+++ b/bundles/azure/build.gradle.kts
@@ -26,12 +26,13 @@ plugins {
 
 dependencies {
   compileOnly(project(":api"))
-  compileOnly(project(":catalogs:catalog-fileset"))
-  compileOnly(project(":core"))
   compileOnly(libs.hadoop3.abs)
   compileOnly(libs.hadoop3.client.api)
   compileOnly(libs.hadoop3.client.runtime)
 
+  implementation(project(":common")) {
+    exclude("*")
+  }
   implementation(project(":catalogs:catalog-common")) {
     exclude("*")
   }
diff --git a/bundles/gcp/build.gradle.kts b/bundles/gcp/build.gradle.kts
index 61001ccab5..b7a78fcd84 100644
--- a/bundles/gcp/build.gradle.kts
+++ b/bundles/gcp/build.gradle.kts
@@ -26,14 +26,13 @@ plugins {
 
 dependencies {
   compileOnly(project(":api"))
-  compileOnly(project(":catalogs:catalog-common"))
-  compileOnly(project(":catalogs:catalog-fileset"))
-  compileOnly(project(":core"))
-
   compileOnly(libs.hadoop3.client.api)
   compileOnly(libs.hadoop3.client.runtime)
   compileOnly(libs.hadoop3.gcs)
 
+  implementation(project(":common")) {
+    exclude("*")
+  }
   implementation(project(":catalogs:catalog-common")) {
     exclude("*")
   }
diff --git a/catalogs/catalog-common/build.gradle.kts 
b/catalogs/catalog-common/build.gradle.kts
index 4cae8c530c..ff9451728d 100644
--- a/catalogs/catalog-common/build.gradle.kts
+++ b/catalogs/catalog-common/build.gradle.kts
@@ -23,8 +23,10 @@ plugins {
 
 // try to avoid adding extra dependencies because it is used by catalogs and 
connectors.
 dependencies {
+  implementation(project(":common"))
   implementation(libs.commons.lang3)
   implementation(libs.guava)
+  implementation(libs.jakarta.validation.api)
   implementation(libs.slf4j.api)
 
   testImplementation(libs.junit.jupiter.api)
diff --git 
a/core/src/main/java/org/apache/gravitino/credential/config/AzureCredentialConfig.java
 
b/catalogs/catalog-common/src/main/java/org/apache/gravitino/credential/config/AzureCredentialConfig.java
similarity index 100%
rename from 
core/src/main/java/org/apache/gravitino/credential/config/AzureCredentialConfig.java
rename to 
catalogs/catalog-common/src/main/java/org/apache/gravitino/credential/config/AzureCredentialConfig.java
diff --git 
a/core/src/main/java/org/apache/gravitino/credential/config/GCSCredentialConfig.java
 
b/catalogs/catalog-common/src/main/java/org/apache/gravitino/credential/config/GCSCredentialConfig.java
similarity index 100%
rename from 
core/src/main/java/org/apache/gravitino/credential/config/GCSCredentialConfig.java
rename to 
catalogs/catalog-common/src/main/java/org/apache/gravitino/credential/config/GCSCredentialConfig.java
diff --git 
a/core/src/main/java/org/apache/gravitino/credential/config/OSSCredentialConfig.java
 
b/catalogs/catalog-common/src/main/java/org/apache/gravitino/credential/config/OSSCredentialConfig.java
similarity index 100%
rename from 
core/src/main/java/org/apache/gravitino/credential/config/OSSCredentialConfig.java
rename to 
catalogs/catalog-common/src/main/java/org/apache/gravitino/credential/config/OSSCredentialConfig.java
diff --git 
a/core/src/main/java/org/apache/gravitino/credential/config/S3CredentialConfig.java
 
b/catalogs/catalog-common/src/main/java/org/apache/gravitino/credential/config/S3CredentialConfig.java
similarity index 100%
rename from 
core/src/main/java/org/apache/gravitino/credential/config/S3CredentialConfig.java
rename to 
catalogs/catalog-common/src/main/java/org/apache/gravitino/credential/config/S3CredentialConfig.java
diff --git a/clients/client-java/build.gradle.kts 
b/clients/client-java/build.gradle.kts
index 8ea315de98..e723d27638 100644
--- a/clients/client-java/build.gradle.kts
+++ b/clients/client-java/build.gradle.kts
@@ -24,7 +24,9 @@ plugins {
 
 dependencies {
   implementation(project(":api"))
-  implementation(project(":common"))
+  implementation(project(":common")) {
+    exclude(group = "org.apache.logging.log4j")
+  }
   implementation(libs.jackson.databind)
   implementation(libs.jackson.annotations)
   implementation(libs.jackson.datatype.jdk8)
diff --git a/common/build.gradle.kts b/common/build.gradle.kts
index adb93a389b..d86654c089 100644
--- a/common/build.gradle.kts
+++ b/common/build.gradle.kts
@@ -36,6 +36,8 @@ dependencies {
   implementation(libs.jackson.datatype.jdk8)
   implementation(libs.jackson.datatype.jsr310)
   implementation(libs.jackson.databind)
+  implementation(libs.jakarta.validation.api)
+  implementation(libs.slf4j.api)
 
   annotationProcessor(libs.lombok)
   compileOnly(libs.lombok)
diff --git a/core/src/main/java/org/apache/gravitino/Config.java 
b/common/src/main/java/org/apache/gravitino/Config.java
similarity index 100%
rename from core/src/main/java/org/apache/gravitino/Config.java
rename to common/src/main/java/org/apache/gravitino/Config.java
diff --git a/core/src/main/java/org/apache/gravitino/config/ConfigBuilder.java 
b/common/src/main/java/org/apache/gravitino/config/ConfigBuilder.java
similarity index 100%
rename from core/src/main/java/org/apache/gravitino/config/ConfigBuilder.java
rename to common/src/main/java/org/apache/gravitino/config/ConfigBuilder.java
diff --git 
a/core/src/main/java/org/apache/gravitino/config/ConfigConstants.java 
b/common/src/main/java/org/apache/gravitino/config/ConfigConstants.java
similarity index 100%
rename from core/src/main/java/org/apache/gravitino/config/ConfigConstants.java
rename to common/src/main/java/org/apache/gravitino/config/ConfigConstants.java
diff --git a/core/src/main/java/org/apache/gravitino/config/ConfigEntry.java 
b/common/src/main/java/org/apache/gravitino/config/ConfigEntry.java
similarity index 100%
rename from core/src/main/java/org/apache/gravitino/config/ConfigEntry.java
rename to common/src/main/java/org/apache/gravitino/config/ConfigEntry.java
diff --git 
a/core/src/main/java/org/apache/gravitino/credential/CredentialContext.java 
b/common/src/main/java/org/apache/gravitino/credential/CredentialContext.java
similarity index 100%
rename from 
core/src/main/java/org/apache/gravitino/credential/CredentialContext.java
rename to 
common/src/main/java/org/apache/gravitino/credential/CredentialContext.java
diff --git 
a/core/src/main/java/org/apache/gravitino/credential/CredentialProvider.java 
b/common/src/main/java/org/apache/gravitino/credential/CredentialProvider.java
similarity index 100%
rename from 
core/src/main/java/org/apache/gravitino/credential/CredentialProvider.java
rename to 
common/src/main/java/org/apache/gravitino/credential/CredentialProvider.java
diff --git 
a/core/src/main/java/org/apache/gravitino/credential/PathBasedCredentialContext.java
 
b/common/src/main/java/org/apache/gravitino/credential/PathBasedCredentialContext.java
similarity index 85%
rename from 
core/src/main/java/org/apache/gravitino/credential/PathBasedCredentialContext.java
rename to 
common/src/main/java/org/apache/gravitino/credential/PathBasedCredentialContext.java
index 2c015b0c56..01da3e7520 100644
--- 
a/core/src/main/java/org/apache/gravitino/credential/PathBasedCredentialContext.java
+++ 
b/common/src/main/java/org/apache/gravitino/credential/PathBasedCredentialContext.java
@@ -34,6 +34,13 @@ public class PathBasedCredentialContext implements 
CredentialContext {
   @NotNull private final Set<String> readPaths;
   @NotNull private final String userName;
 
+  /**
+   * Constructor for PathBasedCredentialContext.
+   *
+   * @param userName the name of the user
+   * @param writePaths the set of paths that the user can write to
+   * @param readPaths the set of paths that the user can read from
+   */
   public PathBasedCredentialContext(
       String userName, Set<String> writePaths, Set<String> readPaths) {
     Preconditions.checkNotNull(userName, "User name should not be null");
@@ -49,10 +56,20 @@ public class PathBasedCredentialContext implements 
CredentialContext {
     return userName;
   }
 
+  /**
+   * Get the set of paths that the user can write to.
+   *
+   * @return set of paths that the user can write to
+   */
   public Set<String> getWritePaths() {
     return writePaths;
   }
 
+  /**
+   * Get the set of paths that the user can read from.
+   *
+   * @return set of paths that the user can read from
+   */
   public Set<String> getReadPaths() {
     return readPaths;
   }
diff --git a/dev/release/release-build.sh b/dev/release/release-build.sh
index ffa5759049..6393480708 100755
--- a/dev/release/release-build.sh
+++ b/dev/release/release-build.sh
@@ -336,8 +336,8 @@ if [[ "$1" == "publish-release" ]]; then
   cd ..
 
   $GRADLE clean
-  $GRADLE build -x test -PdefaultScalaVersion=2.12
-  $GRADLE build -x test -PdefaultScalaVersion=2.13
+  $GRADLE release -x test -PdefaultScalaVersion=2.12
+  $GRADLE release -x test -PdefaultScalaVersion=2.13
 
   $GRADLE -Dmaven.repo.local=$tmp_repo publishToMavenLocal 
-PdefaultScalaVersion=2.12
   $GRADLE -Dmaven.repo.local=$tmp_repo publishToMavenLocal 
-PdefaultScalaVersion=2.13
diff --git a/docs/how-to-build.md b/docs/how-to-build.md
index d277c80938..7a9063d8ca 100644
--- a/docs/how-to-build.md
+++ b/docs/how-to-build.md
@@ -12,14 +12,14 @@ license: "This software is licensed under the Apache 
License version 2."
 
 + Linux or macOS operating system
 + Git
-+ A Java Development Kit, version 8 to 17, installed in your environment to 
launch Gradle
++ A Java Development Kit, version 17, installed in your environment to launch 
Gradle
 + Python 3.8, 3.9, 3.10, 3.11, or 3.12 to build the Gravitino Python client
 + Optionally, Docker to run integration tests
 
 :::info Please read the following notes before trying to build Gravitino.
 
-+ Gravitino requires a minimum of JDK8 and supports up to JDK17 to run Gradle, 
so you need to install a JDK, version 8 to 17, to launch the build environment.
-+ Gravitino itself supports using JDK 8, 11, or 17 to build. The Gravitino 
Trino connector uses JDK17 to build (to avoid vendor-related issues on some 
platforms, Gravitino uses the specified Amazon Corretto OpenJDK 17 to build the 
Trino connector on macOS).
++ Gravitino requires a minimum of JDK17 to run Gradle, so you need to install 
a JDK17 to launch the build environment.
++ Gravitino itself supports using JDK 17 to build. The Gravitino Trino 
connector uses JDK17 to build (to avoid vendor-related issues on some 
platforms, It's recommended to use Amazon Corretto OpenJDK 17 to build 
Gravitino on macOS).
  You don't have to preinstall the specified JDK environment, as Gradle detects 
the JDK version needed and downloads it automatically.
 + Gravitino uses the Gradle Java Toolchain to detect and manage JDK versions, 
and it checks the installed JDK by running the `./gradlew javaToolchains` 
command. See [Gradle Java 
Toolchain](https://docs.gradle.org/current/userguide/toolchains.html#sec:java_toolchain).
 + Gravitino excludes all Docker-related tests by default. To run 
Docker-related tests, make sure you have installed Docker in your environment 
and either (1) set `skipDockerTests=false` in the `gradle.properties` file (or 
use `-PskipDockerTests=false` in the command) or (2) `export 
SKIP_DOCKER_TESTS=false` in the shell. Otherwise, all tests requiring Docker 
will be skipped.
@@ -45,18 +45,6 @@ license: "This software is licensed under the Apache License 
version 2."
    ./gradlew build
    ```
 
-   The default specified JDK version is 8, but if you want to use JDK 11 or 17 
to build, modify the property `jdkVersion` to 11 or 17 in the 
`gradle.properties` file, or specify the version with `-P`, like:
-
-   ```shell
-   ./gradlew build -PjdkVersion=11
-   ```
-
-   Or:
-
-   ```shell
-   ./gradlew build -PjdkVersion=17
-   ```
-
   The `./gradlew build` command builds all the Gravitino components, including 
the Gravitino server, Java and Python clients, Trino and Spark connectors, and 
more.
 
   For the Python client, the `./gradlew build` command builds the Python 
client with Python 3.8 by default. If you want to use Python 3.9, 3.10, 3.11, 
or 3.12 to build, please modify the property `pythonVersion` to 3.9, 3.10, 
3.11, or 3.12 in the `gradle.properties` file, or specify the version with `-P` 
like:
@@ -100,7 +88,7 @@ license: "This software is licensed under the Apache License 
version 2."
  
   You can add `-x test` to skip the tests using `./gradlew build -x test`.
 
-  The built Gravitino libraries are Java 8 compatible and verified under the 
Java 8, 11, and 17 environments. You can use Java 8, 11, or 17 runtimes to run 
the Gravitino server, no matter which JDK version was used to build the project.
+  The built Gravitino libraries are Java 17 compatible and verified under 17 
environments. You can use Java 17 runtimes to run the Gravitino server, no 
matter which JDK version was used to build the project.
 
   The built jars are under the modules `build/libs` directory. You can publish 
them in your Maven repository for use in your project.
   :::
@@ -177,7 +165,7 @@ sudo apt install apt-transport-https ca-certificates curl 
software-properties-co
 
 Updating the package list ensures you have the latest information on the 
newest versions of packages and dependencies. Installing the necessary packages 
lets your system download and manage additional software securely.
 
-### Download and setup Java SDK 17 (11 or 8 also works)
+### Download and setup Java SDK 17
 
 **On Ubuntu (WSL):**
 
@@ -187,10 +175,10 @@ Updating the package list ensures you have the latest 
information on the newest
    vim ~/.bashrc
    ```
 
-2. Add the following lines at the end of the file. Replace 
`/usr/lib/jvm/java-11-openjdk-amd64` with your actual Java installation path:
+2. Add the following lines at the end of the file. Replace 
`/usr/lib/jvm/java-17-openjdk-amd64` with your actual Java installation path:
 
    ```sh
-   export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
+   export JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64"
    export PATH=$PATH:$JAVA_HOME/bin
    ```
 
diff --git a/flink-connector/flink/build.gradle.kts 
b/flink-connector/flink/build.gradle.kts
index 9afd51ed03..ae6f806f47 100644
--- a/flink-connector/flink/build.gradle.kts
+++ b/flink-connector/flink/build.gradle.kts
@@ -41,10 +41,6 @@ val scalaVersion: String = "2.12"
 val artifactName = 
"${rootProject.name}-flink-${flinkMajorVersion}_$scalaVersion"
 
 dependencies {
-  implementation(project(":core")) {
-    exclude("org.apache.logging.log4j")
-    exclude("org.opensearch.client")
-  }
   implementation(project(":catalogs:catalog-common")) {
     exclude("org.apache.logging.log4j")
   }
diff --git a/gradle.properties b/gradle.properties
index 69052f0c96..8a857ef685 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -29,10 +29,6 @@ version = 1.0.0-SNAPSHOT
 SONATYPE_USER = admin
 SONATYPE_PASSWORD = password
 
-# jdkVersion is used to specify the version of JDK to build and test 
Gravitino, current
-# supported version is 17.
-jdkVersion = 17
-
 # defaultScalaVersion is used to specify the version of Scala to build and 
test Gravitino
 defaultScalaVersion = 2.12
 
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index c8260c3b80..45f3bcac5a 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -127,6 +127,7 @@ jmh = "1.37"
 jcasbin = "1.81.0"
 ognl = "3.4.7"
 concurrent-trees = "2.6.0"
+jakarta-validation = "2.0.2"
 
 [libraries]
 aws-iam = { group = "software.amazon.awssdk", name = "iam", version.ref = 
"awssdk" }
@@ -158,6 +159,7 @@ log4j-api = { group = "org.apache.logging.log4j", name = 
"log4j-api", version.re
 log4j-core = { group = "org.apache.logging.log4j", name = "log4j-core", 
version.ref = "log4j" }
 log4j-12-api = { group = "org.apache.logging.log4j", name = "log4j-1.2-api", 
version.ref = "log4j" }
 log4j-layout-template-json = { group = "org.apache.logging.log4j", name = 
"log4j-layout-template-json", version.ref = "log4j" }
+jakarta-validation-api = { group = "jakarta.validation", name = 
"jakarta.validation-api", version.ref = "jakarta-validation" }
 jetty-server = { group = "org.eclipse.jetty", name = "jetty-server", 
version.ref = "jetty" }
 jetty-servlet = { group = "org.eclipse.jetty", name = "jetty-servlet", 
version.ref = "jetty" }
 jetty-servlets = { group = "org.eclipse.jetty", name = "jetty-servlets", 
version.ref = "jetty" }
diff --git a/spark-connector/spark-common/build.gradle.kts 
b/spark-connector/spark-common/build.gradle.kts
index 8ec7e23b3e..432e3160f4 100644
--- a/spark-connector/spark-common/build.gradle.kts
+++ b/spark-connector/spark-common/build.gradle.kts
@@ -37,7 +37,9 @@ val scalaJava8CompatVersion: String = 
libs.versions.scala.java.compat.get()
 val scalaCollectionCompatVersion: String = 
libs.versions.scala.collection.compat.get()
 
 dependencies {
-  implementation(project(":catalogs:catalog-common"))
+  implementation(project(":catalogs:catalog-common")) {
+    exclude("org.apache.logging.log4j")
+  }
   implementation(libs.guava)
   implementation(libs.caffeine)
 

Reply via email to