This is an automated email from the ASF dual-hosted git repository.
fanng pushed a commit to branch branch-0.6
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/branch-0.6 by this push:
new 9ebe6ace5 [#3514] improvement(flink-connector): add
flink-connector-runtime to build flink connector (#4815)
9ebe6ace5 is described below
commit 9ebe6ace5bf5bd0f03ca40eecb15e2df0f3c9e36
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Fri Aug 30 20:07:00 2024 +0800
[#3514] improvement(flink-connector): add flink-connector-runtime to build
flink connector (#4815)
### What changes were proposed in this pull request?
- add flink runtime connector
### Why are the changes needed?
Fix: #3514
### Does this PR introduce _any_ user-facing change?
- no
### How was this patch tested?
- local test
Co-authored-by: Peidian li <[email protected]>
Co-authored-by: fanng <[email protected]>
---
.github/workflows/flink-integration-test.yml | 10 +-
build.gradle.kts | 6 +-
docs/flink-connector/flink-connector.md | 2 +-
flink-connector/build.gradle.kts | 157 +--------------------
flink-connector/flink-runtime/build.gradle.kts | 73 ++++++++++
flink-connector/{ => flink}/build.gradle.kts | 43 +++++-
.../flink/connector/DefaultPartitionConverter.java | 0
.../flink/connector/PartitionConverter.java | 0
.../flink/connector/PropertiesConverter.java | 0
.../flink/connector/catalog/BaseCatalog.java | 0
.../connector/catalog/GravitinoCatalogManager.java | 0
.../flink/connector/hive/GravitinoHiveCatalog.java | 0
.../hive/GravitinoHiveCatalogFactory.java | 0
.../hive/GravitinoHiveCatalogFactoryOptions.java | 0
.../connector/hive/HivePropertiesConverter.java | 0
.../connector/store/GravitinoCatalogStore.java | 0
.../store/GravitinoCatalogStoreFactory.java | 0
.../store/GravitinoCatalogStoreFactoryOptions.java | 0
.../flink/connector/utils/FactoryUtils.java | 0
.../flink/connector/utils/PropertyUtils.java | 0
.../flink/connector/utils/TableUtils.java | 0
.../gravitino/flink/connector/utils/TypeUtils.java | 0
.../org.apache.flink.table.factories.Factory | 0
.../flink/connector/catalog/TestBaseCatalog.java | 0
.../hive/TestHivePropertiesConverter.java | 0
.../connector/integration/test/FlinkCommonIT.java | 0
.../connector/integration/test/FlinkEnvIT.java | 0
.../integration/test/hive/FlinkHiveCatalogIT.java | 0
.../integration/test/utils/TestUtils.java | 0
.../flink/connector/utils/TestTypeUtils.java | 0
.../src/test/resources/flink-tests/hive-site.xml | 0
.../src/test/resources/log4j2.properties | 0
settings.gradle.kts | 3 +-
33 files changed, 123 insertions(+), 171 deletions(-)
diff --git a/.github/workflows/flink-integration-test.yml
b/.github/workflows/flink-integration-test.yml
index c59c0fd23..6e1227664 100644
--- a/.github/workflows/flink-integration-test.yml
+++ b/.github/workflows/flink-integration-test.yml
@@ -86,8 +86,8 @@ jobs:
- name: Flink Integration Test
id: integrationTest
run: |
- ./gradlew -PskipTests -PtestMode=embedded -PjdkVersion=${{
matrix.java-version }} -PskipDockerTests=false :flink-connector:test --tests
"org.apache.gravitino.flink.connector.integration.test.**"
- ./gradlew -PskipTests -PtestMode=deploy -PjdkVersion=${{
matrix.java-version }} -PskipDockerTests=false :flink-connector:test --tests
"org.apache.gravitino.flink.connector.integration.test.**"
+ ./gradlew -PskipTests -PtestMode=embedded -PjdkVersion=${{
matrix.java-version }} -PskipDockerTests=false :flink-connector:flink:test
--tests "org.apache.gravitino.flink.connector.integration.test.**"
+ ./gradlew -PskipTests -PtestMode=deploy -PjdkVersion=${{
matrix.java-version }} -PskipDockerTests=false :flink-connector:flink:test
--tests "org.apache.gravitino.flink.connector.integration.test.**"
- name: Upload integrate tests reports
uses: actions/upload-artifact@v3
@@ -96,9 +96,9 @@ jobs:
name: flink-connector-integrate-test-reports-${{ matrix.java-version
}}
path: |
build/reports
- flink-connector/build/flink-connector-integration-test.log
- flink-connector/build/*.tar
+ flink-connector/flink/build/*.log
+ flink-connector/flink/build/*.tar
distribution/package/logs/gravitino-server.out
distribution/package/logs/gravitino-server.log
catalogs/**/*.log
- catalogs/**/*.tar
\ No newline at end of file
+ catalogs/**/*.tar
diff --git a/build.gradle.kts b/build.gradle.kts
index a6307aa27..50e62de3b 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -736,7 +736,7 @@ tasks {
if (!it.name.startsWith("catalog") &&
!it.name.startsWith("authorization") &&
!it.name.startsWith("client") && !it.name.startsWith("filesystem") &&
!it.name.startsWith("spark") && !it.name.startsWith("iceberg") && it.name !=
"trino-connector" &&
- it.name != "integration-test" && it.name != "bundled-catalog" &&
it.name != "flink-connector"
+ it.name != "integration-test" && it.name != "bundled-catalog" &&
!it.name.startsWith("flink")
) {
from(it.configurations.runtimeClasspath)
into("distribution/package/libs")
@@ -753,9 +753,9 @@ tasks {
!it.name.startsWith("spark") &&
!it.name.startsWith("iceberg") &&
!it.name.startsWith("integration-test") &&
+ !it.name.startsWith("flink") &&
it.name != "trino-connector" &&
- it.name != "bundled-catalog" &&
- it.name != "flink-connector"
+ it.name != "bundled-catalog"
) {
dependsOn("${it.name}:build")
from("${it.name}/build/libs")
diff --git a/docs/flink-connector/flink-connector.md
b/docs/flink-connector/flink-connector.md
index 6a323776e..639dd0d68 100644
--- a/docs/flink-connector/flink-connector.md
+++ b/docs/flink-connector/flink-connector.md
@@ -23,7 +23,7 @@ This capability allows users to perform federation queries,
accessing data from
## How to use it
-1. [Build](../how-to-build.md) or
[download](https://mvnrepository.com/artifact/org.apache.gravitino/gravitino-flink-connector)
the Gravitino flink connector jar, and place it to the classpath of Flink.
+1. [Build](../how-to-build.md) or
[download](https://mvnrepository.com/artifact/org.apache.gravitino/gravitino-flink-connector-runtime-1.18)
the Gravitino flink connector runtime jar, and place it to the classpath of
Flink.
2. Configure the Flink configuration to use the Gravitino flink connector.
| Property | Type | Default Value
| Description |
Required | Since Version |
diff --git a/flink-connector/build.gradle.kts b/flink-connector/build.gradle.kts
index c2b13f408..043fbfec6 100644
--- a/flink-connector/build.gradle.kts
+++ b/flink-connector/build.gradle.kts
@@ -16,158 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-plugins {
- `maven-publish`
- id("java")
- id("idea")
-}
-repositories {
- mavenCentral()
-}
-
-val flinkVersion: String = libs.versions.flink.get()
-
-// The Flink only support scala 2.12, and all scala api will be removed in a
future version.
-// You can find more detail at the following issues:
-// https://issues.apache.org/jira/browse/FLINK-23986,
-// https://issues.apache.org/jira/browse/FLINK-20845,
-// https://issues.apache.org/jira/browse/FLINK-13414.
-val scalaVersion: String = "2.12"
-val artifactName = "gravitino-${project.name}_$scalaVersion"
-
-dependencies {
- implementation(project(":api"))
- implementation(project(":catalogs:catalog-common"))
- implementation(project(":common"))
- implementation(project(":core"))
- implementation(project(":clients:client-java"))
-
- implementation(libs.bundles.log4j)
- implementation(libs.commons.lang3)
- implementation(libs.guava)
- implementation(libs.httpclient5)
- implementation(libs.jackson.databind)
- implementation(libs.jackson.annotations)
- implementation(libs.jackson.datatype.jdk8)
- implementation(libs.jackson.datatype.jsr310)
-
-
implementation("org.apache.flink:flink-connector-hive_$scalaVersion:$flinkVersion")
- implementation("org.apache.flink:flink-table-common:$flinkVersion")
- implementation("org.apache.flink:flink-table-api-java:$flinkVersion")
-
- implementation(libs.hive2.exec) {
- artifact {
- classifier = "core"
- }
- exclude("com.fasterxml.jackson.core")
- exclude("com.google.code.findbugs", "jsr305")
- exclude("com.google.protobuf")
- exclude("org.apache.avro")
- exclude("org.apache.calcite")
- exclude("org.apache.calcite.avatica")
- exclude("org.apache.curator")
- exclude("org.apache.hadoop", "hadoop-yarn-server-resourcemanager")
- exclude("org.apache.logging.log4j")
- exclude("org.apache.zookeeper")
- exclude("org.eclipse.jetty.aggregate", "jetty-all")
- exclude("org.eclipse.jetty.orbit", "javax.servlet")
- exclude("org.openjdk.jol")
- exclude("org.pentaho")
- exclude("org.slf4j")
- }
-
- testAnnotationProcessor(libs.lombok)
-
- testCompileOnly(libs.lombok)
- testImplementation(project(":integration-test-common", "testArtifacts"))
- testImplementation(project(":server"))
- testImplementation(project(":server-common"))
- testImplementation(libs.junit.jupiter.api)
- testImplementation(libs.junit.jupiter.params)
- testImplementation(libs.mockito.core)
- testImplementation(libs.mysql.driver)
- testImplementation(libs.sqlite.jdbc)
- testImplementation(libs.testcontainers)
- testImplementation(libs.testcontainers.junit.jupiter)
- testImplementation(libs.testcontainers.mysql)
-
- testImplementation(libs.hadoop2.common) {
- exclude("*")
- }
- testImplementation(libs.hadoop2.hdfs) {
- exclude("com.sun.jersey")
- exclude("commons-cli", "commons-cli")
- exclude("commons-io", "commons-io")
- exclude("commons-codec", "commons-codec")
- exclude("commons-logging", "commons-logging")
- exclude("javax.servlet", "servlet-api")
- exclude("org.mortbay.jetty")
- }
- testImplementation(libs.hadoop2.mapreduce.client.core) {
- exclude("*")
- }
- testImplementation(libs.hive2.common) {
- exclude("org.eclipse.jetty.aggregate", "jetty-all")
- exclude("org.eclipse.jetty.orbit", "javax.servlet")
- }
- testImplementation(libs.hive2.metastore) {
- exclude("co.cask.tephra")
- exclude("com.github.joshelser")
- exclude("com.google.code.findbugs", "jsr305")
- exclude("com.google.code.findbugs", "sr305")
- exclude("com.tdunning", "json")
- exclude("com.zaxxer", "HikariCP")
- exclude("io.dropwizard.metricss")
- exclude("javax.transaction", "transaction-api")
- exclude("org.apache.avro")
- exclude("org.apache.curator")
- exclude("org.apache.hbase")
- exclude("org.apache.hadoop", "hadoop-yarn-server-resourcemanager")
- exclude("org.apache.logging.log4j")
- exclude("org.apache.parquet", "parquet-hadoop-bundle")
- exclude("org.apache.zookeeper")
- exclude("org.eclipse.jetty.aggregate", "jetty-all")
- exclude("org.eclipse.jetty.orbit", "javax.servlet")
- exclude("org.slf4j")
- }
-
testImplementation("org.apache.flink:flink-table-api-bridge-base:$flinkVersion")
{
- exclude("commons-cli", "commons-cli")
- exclude("commons-io", "commons-io")
- exclude("com.google.code.findbugs", "jsr305")
- }
-
testImplementation("org.apache.flink:flink-table-planner_$scalaVersion:$flinkVersion")
- testImplementation("org.apache.flink:flink-test-utils:$flinkVersion")
-
- testRuntimeOnly(libs.junit.jupiter.engine)
-}
-
-tasks.test {
- val skipUTs = project.hasProperty("skipTests")
- if (skipUTs) {
- // Only run integration tests
- include("**/integration/**")
- }
-
- val skipITs = project.hasProperty("skipITs")
- val skipFlinkITs = project.hasProperty("skipFlinkITs")
- if (skipITs || skipFlinkITs) {
- // Exclude integration tests
- exclude("**/integration/**")
- } else {
- dependsOn(tasks.jar)
- dependsOn(":catalogs:catalog-hive:jar")
- }
-}
-
-tasks.withType<Jar> {
- archiveBaseName.set(artifactName)
-}
-
-publishing {
- publications {
- withType<MavenPublication>().configureEach {
- artifactId = artifactName
- }
- }
-}
+tasks.all {
+ enabled = false
+}
\ No newline at end of file
diff --git a/flink-connector/flink-runtime/build.gradle.kts
b/flink-connector/flink-runtime/build.gradle.kts
new file mode 100644
index 000000000..63349ba69
--- /dev/null
+++ b/flink-connector/flink-runtime/build.gradle.kts
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
+
+plugins {
+ `maven-publish`
+ id("java")
+ id("idea")
+ alias(libs.plugins.shadow)
+}
+
+repositories {
+ mavenCentral()
+}
+
+val flinkVersion: String = libs.versions.flink.get()
+val flinkMajorVersion: String = flinkVersion.substringBeforeLast(".")
+
+// The Flink only support scala 2.12, and all scala api will be removed in a
future version.
+// You can find more detail at the following issues:
+// https://issues.apache.org/jira/browse/FLINK-23986,
+// https://issues.apache.org/jira/browse/FLINK-20845,
+// https://issues.apache.org/jira/browse/FLINK-13414.
+val scalaVersion: String = "2.12"
+val artifactName = "gravitino-${project.name}_$scalaVersion"
+val baseName =
"${rootProject.name}-flink-connector-runtime-${flinkMajorVersion}_$scalaVersion"
+
+dependencies {
+ implementation(project(":clients:client-java-runtime", configuration =
"shadow"))
+ implementation(project(":flink-connector:flink"))
+}
+
+tasks.withType<ShadowJar>(ShadowJar::class.java) {
+ isZip64 = true
+ configurations = listOf(project.configurations.runtimeClasspath.get())
+ archiveFileName.set("$baseName-$version.jar")
+ archiveClassifier.set("")
+
+ // Relocate dependencies to avoid conflicts
+ relocate("com.google", "org.apache.gravitino.shaded.com.google")
+ relocate("google", "org.apache.gravitino.shaded.google")
+ relocate("org.apache.hc", "org.apache.gravitino.shaded.org.apache.hc")
+ relocate("org.apache.commons",
"org.apache.gravitino.shaded.org.apache.commons")
+}
+
+publishing {
+ publications {
+ withType<MavenPublication>().configureEach {
+ artifactId = baseName
+ }
+ }
+}
+
+tasks.jar {
+ dependsOn(tasks.named("shadowJar"))
+ archiveClassifier.set("empty")
+}
diff --git a/flink-connector/build.gradle.kts
b/flink-connector/flink/build.gradle.kts
similarity index 78%
copy from flink-connector/build.gradle.kts
copy to flink-connector/flink/build.gradle.kts
index c2b13f408..34b09a7f0 100644
--- a/flink-connector/build.gradle.kts
+++ b/flink-connector/flink/build.gradle.kts
@@ -27,6 +27,7 @@ repositories {
}
val flinkVersion: String = libs.versions.flink.get()
+val flinkMajorVersion: String = flinkVersion.substringBeforeLast(".")
// The Flink only support scala 2.12, and all scala api will be removed in a
future version.
// You can find more detail at the following issues:
@@ -34,16 +35,15 @@ val flinkVersion: String = libs.versions.flink.get()
// https://issues.apache.org/jira/browse/FLINK-20845,
// https://issues.apache.org/jira/browse/FLINK-13414.
val scalaVersion: String = "2.12"
-val artifactName = "gravitino-${project.name}_$scalaVersion"
+val artifactName =
"${rootProject.name}-flink-${flinkMajorVersion}_$scalaVersion"
dependencies {
implementation(project(":api"))
implementation(project(":catalogs:catalog-common"))
implementation(project(":common"))
implementation(project(":core"))
- implementation(project(":clients:client-java"))
- implementation(libs.bundles.log4j)
+ compileOnly(libs.bundles.log4j)
implementation(libs.commons.lang3)
implementation(libs.guava)
implementation(libs.httpclient5)
@@ -52,11 +52,11 @@ dependencies {
implementation(libs.jackson.datatype.jdk8)
implementation(libs.jackson.datatype.jsr310)
-
implementation("org.apache.flink:flink-connector-hive_$scalaVersion:$flinkVersion")
- implementation("org.apache.flink:flink-table-common:$flinkVersion")
- implementation("org.apache.flink:flink-table-api-java:$flinkVersion")
+
compileOnly("org.apache.flink:flink-connector-hive_$scalaVersion:$flinkVersion")
+ compileOnly("org.apache.flink:flink-table-common:$flinkVersion")
+ compileOnly("org.apache.flink:flink-table-api-java:$flinkVersion")
- implementation(libs.hive2.exec) {
+ compileOnly(libs.hive2.exec) {
artifact {
classifier = "core"
}
@@ -77,9 +77,13 @@ dependencies {
exclude("org.slf4j")
}
+ // replace with client-java-runtime in flink connector runtime
+ compileOnly(project(":clients:client-java"))
+
testAnnotationProcessor(libs.lombok)
testCompileOnly(libs.lombok)
+ testImplementation(project(":clients:client-java"))
testImplementation(project(":integration-test-common", "testArtifacts"))
testImplementation(project(":server"))
testImplementation(project(":server-common"))
@@ -92,6 +96,31 @@ dependencies {
testImplementation(libs.testcontainers.junit.jupiter)
testImplementation(libs.testcontainers.mysql)
+
testImplementation("org.apache.flink:flink-connector-hive_$scalaVersion:$flinkVersion")
+ testImplementation("org.apache.flink:flink-table-common:$flinkVersion")
+ testImplementation("org.apache.flink:flink-table-api-java:$flinkVersion")
+
+ testImplementation(libs.hive2.exec) {
+ artifact {
+ classifier = "core"
+ }
+ exclude("com.fasterxml.jackson.core")
+ exclude("com.google.code.findbugs", "jsr305")
+ exclude("com.google.protobuf")
+ exclude("org.apache.avro")
+ exclude("org.apache.calcite")
+ exclude("org.apache.calcite.avatica")
+ exclude("org.apache.curator")
+ exclude("org.apache.hadoop", "hadoop-yarn-server-resourcemanager")
+ exclude("org.apache.logging.log4j")
+ exclude("org.apache.zookeeper")
+ exclude("org.eclipse.jetty.aggregate", "jetty-all")
+ exclude("org.eclipse.jetty.orbit", "javax.servlet")
+ exclude("org.openjdk.jol")
+ exclude("org.pentaho")
+ exclude("org.slf4j")
+ }
+
testImplementation(libs.hadoop2.common) {
exclude("*")
}
diff --git
a/flink-connector/src/main/java/org/apache/gravitino/flink/connector/DefaultPartitionConverter.java
b/flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/DefaultPartitionConverter.java
similarity index 100%
rename from
flink-connector/src/main/java/org/apache/gravitino/flink/connector/DefaultPartitionConverter.java
rename to
flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/DefaultPartitionConverter.java
diff --git
a/flink-connector/src/main/java/org/apache/gravitino/flink/connector/PartitionConverter.java
b/flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/PartitionConverter.java
similarity index 100%
rename from
flink-connector/src/main/java/org/apache/gravitino/flink/connector/PartitionConverter.java
rename to
flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/PartitionConverter.java
diff --git
a/flink-connector/src/main/java/org/apache/gravitino/flink/connector/PropertiesConverter.java
b/flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/PropertiesConverter.java
similarity index 100%
rename from
flink-connector/src/main/java/org/apache/gravitino/flink/connector/PropertiesConverter.java
rename to
flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/PropertiesConverter.java
diff --git
a/flink-connector/src/main/java/org/apache/gravitino/flink/connector/catalog/BaseCatalog.java
b/flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/catalog/BaseCatalog.java
similarity index 100%
rename from
flink-connector/src/main/java/org/apache/gravitino/flink/connector/catalog/BaseCatalog.java
rename to
flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/catalog/BaseCatalog.java
diff --git
a/flink-connector/src/main/java/org/apache/gravitino/flink/connector/catalog/GravitinoCatalogManager.java
b/flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/catalog/GravitinoCatalogManager.java
similarity index 100%
rename from
flink-connector/src/main/java/org/apache/gravitino/flink/connector/catalog/GravitinoCatalogManager.java
rename to
flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/catalog/GravitinoCatalogManager.java
diff --git
a/flink-connector/src/main/java/org/apache/gravitino/flink/connector/hive/GravitinoHiveCatalog.java
b/flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/hive/GravitinoHiveCatalog.java
similarity index 100%
rename from
flink-connector/src/main/java/org/apache/gravitino/flink/connector/hive/GravitinoHiveCatalog.java
rename to
flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/hive/GravitinoHiveCatalog.java
diff --git
a/flink-connector/src/main/java/org/apache/gravitino/flink/connector/hive/GravitinoHiveCatalogFactory.java
b/flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/hive/GravitinoHiveCatalogFactory.java
similarity index 100%
rename from
flink-connector/src/main/java/org/apache/gravitino/flink/connector/hive/GravitinoHiveCatalogFactory.java
rename to
flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/hive/GravitinoHiveCatalogFactory.java
diff --git
a/flink-connector/src/main/java/org/apache/gravitino/flink/connector/hive/GravitinoHiveCatalogFactoryOptions.java
b/flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/hive/GravitinoHiveCatalogFactoryOptions.java
similarity index 100%
rename from
flink-connector/src/main/java/org/apache/gravitino/flink/connector/hive/GravitinoHiveCatalogFactoryOptions.java
rename to
flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/hive/GravitinoHiveCatalogFactoryOptions.java
diff --git
a/flink-connector/src/main/java/org/apache/gravitino/flink/connector/hive/HivePropertiesConverter.java
b/flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/hive/HivePropertiesConverter.java
similarity index 100%
rename from
flink-connector/src/main/java/org/apache/gravitino/flink/connector/hive/HivePropertiesConverter.java
rename to
flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/hive/HivePropertiesConverter.java
diff --git
a/flink-connector/src/main/java/org/apache/gravitino/flink/connector/store/GravitinoCatalogStore.java
b/flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/store/GravitinoCatalogStore.java
similarity index 100%
rename from
flink-connector/src/main/java/org/apache/gravitino/flink/connector/store/GravitinoCatalogStore.java
rename to
flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/store/GravitinoCatalogStore.java
diff --git
a/flink-connector/src/main/java/org/apache/gravitino/flink/connector/store/GravitinoCatalogStoreFactory.java
b/flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/store/GravitinoCatalogStoreFactory.java
similarity index 100%
rename from
flink-connector/src/main/java/org/apache/gravitino/flink/connector/store/GravitinoCatalogStoreFactory.java
rename to
flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/store/GravitinoCatalogStoreFactory.java
diff --git
a/flink-connector/src/main/java/org/apache/gravitino/flink/connector/store/GravitinoCatalogStoreFactoryOptions.java
b/flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/store/GravitinoCatalogStoreFactoryOptions.java
similarity index 100%
rename from
flink-connector/src/main/java/org/apache/gravitino/flink/connector/store/GravitinoCatalogStoreFactoryOptions.java
rename to
flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/store/GravitinoCatalogStoreFactoryOptions.java
diff --git
a/flink-connector/src/main/java/org/apache/gravitino/flink/connector/utils/FactoryUtils.java
b/flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/utils/FactoryUtils.java
similarity index 100%
rename from
flink-connector/src/main/java/org/apache/gravitino/flink/connector/utils/FactoryUtils.java
rename to
flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/utils/FactoryUtils.java
diff --git
a/flink-connector/src/main/java/org/apache/gravitino/flink/connector/utils/PropertyUtils.java
b/flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/utils/PropertyUtils.java
similarity index 100%
rename from
flink-connector/src/main/java/org/apache/gravitino/flink/connector/utils/PropertyUtils.java
rename to
flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/utils/PropertyUtils.java
diff --git
a/flink-connector/src/main/java/org/apache/gravitino/flink/connector/utils/TableUtils.java
b/flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/utils/TableUtils.java
similarity index 100%
rename from
flink-connector/src/main/java/org/apache/gravitino/flink/connector/utils/TableUtils.java
rename to
flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/utils/TableUtils.java
diff --git
a/flink-connector/src/main/java/org/apache/gravitino/flink/connector/utils/TypeUtils.java
b/flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/utils/TypeUtils.java
similarity index 100%
rename from
flink-connector/src/main/java/org/apache/gravitino/flink/connector/utils/TypeUtils.java
rename to
flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/utils/TypeUtils.java
diff --git
a/flink-connector/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory
b/flink-connector/flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory
similarity index 100%
rename from
flink-connector/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory
rename to
flink-connector/flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory
diff --git
a/flink-connector/src/test/java/org/apache/gravitino/flink/connector/catalog/TestBaseCatalog.java
b/flink-connector/flink/src/test/java/org/apache/gravitino/flink/connector/catalog/TestBaseCatalog.java
similarity index 100%
rename from
flink-connector/src/test/java/org/apache/gravitino/flink/connector/catalog/TestBaseCatalog.java
rename to
flink-connector/flink/src/test/java/org/apache/gravitino/flink/connector/catalog/TestBaseCatalog.java
diff --git
a/flink-connector/src/test/java/org/apache/gravitino/flink/connector/hive/TestHivePropertiesConverter.java
b/flink-connector/flink/src/test/java/org/apache/gravitino/flink/connector/hive/TestHivePropertiesConverter.java
similarity index 100%
rename from
flink-connector/src/test/java/org/apache/gravitino/flink/connector/hive/TestHivePropertiesConverter.java
rename to
flink-connector/flink/src/test/java/org/apache/gravitino/flink/connector/hive/TestHivePropertiesConverter.java
diff --git
a/flink-connector/src/test/java/org/apache/gravitino/flink/connector/integration/test/FlinkCommonIT.java
b/flink-connector/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/FlinkCommonIT.java
similarity index 100%
rename from
flink-connector/src/test/java/org/apache/gravitino/flink/connector/integration/test/FlinkCommonIT.java
rename to
flink-connector/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/FlinkCommonIT.java
diff --git
a/flink-connector/src/test/java/org/apache/gravitino/flink/connector/integration/test/FlinkEnvIT.java
b/flink-connector/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/FlinkEnvIT.java
similarity index 100%
rename from
flink-connector/src/test/java/org/apache/gravitino/flink/connector/integration/test/FlinkEnvIT.java
rename to
flink-connector/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/FlinkEnvIT.java
diff --git
a/flink-connector/src/test/java/org/apache/gravitino/flink/connector/integration/test/hive/FlinkHiveCatalogIT.java
b/flink-connector/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/hive/FlinkHiveCatalogIT.java
similarity index 100%
rename from
flink-connector/src/test/java/org/apache/gravitino/flink/connector/integration/test/hive/FlinkHiveCatalogIT.java
rename to
flink-connector/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/hive/FlinkHiveCatalogIT.java
diff --git
a/flink-connector/src/test/java/org/apache/gravitino/flink/connector/integration/test/utils/TestUtils.java
b/flink-connector/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/utils/TestUtils.java
similarity index 100%
rename from
flink-connector/src/test/java/org/apache/gravitino/flink/connector/integration/test/utils/TestUtils.java
rename to
flink-connector/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/utils/TestUtils.java
diff --git
a/flink-connector/src/test/java/org/apache/gravitino/flink/connector/utils/TestTypeUtils.java
b/flink-connector/flink/src/test/java/org/apache/gravitino/flink/connector/utils/TestTypeUtils.java
similarity index 100%
rename from
flink-connector/src/test/java/org/apache/gravitino/flink/connector/utils/TestTypeUtils.java
rename to
flink-connector/flink/src/test/java/org/apache/gravitino/flink/connector/utils/TestTypeUtils.java
diff --git a/flink-connector/src/test/resources/flink-tests/hive-site.xml
b/flink-connector/flink/src/test/resources/flink-tests/hive-site.xml
similarity index 100%
rename from flink-connector/src/test/resources/flink-tests/hive-site.xml
rename to flink-connector/flink/src/test/resources/flink-tests/hive-site.xml
diff --git a/flink-connector/src/test/resources/log4j2.properties
b/flink-connector/flink/src/test/resources/log4j2.properties
similarity index 100%
rename from flink-connector/src/test/resources/log4j2.properties
rename to flink-connector/flink/src/test/resources/log4j2.properties
diff --git a/settings.gradle.kts b/settings.gradle.kts
index f62d55125..1bf0d5083 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -56,7 +56,8 @@ if (scalaVersion == "2.12") {
project(":spark-connector:spark-3.3").projectDir =
file("spark-connector/v3.3/spark")
project(":spark-connector:spark-runtime-3.3").projectDir =
file("spark-connector/v3.3/spark-runtime")
// flink only support scala 2.12
- include("flink-connector")
+ include("flink-connector:flink")
+ include("flink-connector:flink-runtime")
}
include("spark-connector:spark-3.4", "spark-connector:spark-runtime-3.4",
"spark-connector:spark-3.5", "spark-connector:spark-runtime-3.5")
project(":spark-connector:spark-3.4").projectDir =
file("spark-connector/v3.4/spark")