This is an automated email from the ASF dual-hosted git repository.
jshao pushed a commit to branch branch-1.1
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/branch-1.1 by this push:
new 108f3e5594 [Cherry-pick to branch 1.1][#10262] refactor(build): remove
release task and centralize JDK8 compatibility (#10493)
108f3e5594 is described below
commit 108f3e55940e13c46b11c62c0945279b052c1a27
Author: FANNG <[email protected]>
AuthorDate: Mon Mar 23 12:05:47 2026 +0900
[Cherry-pick to branch 1.1][#10262] refactor(build): remove release task
and centralize JDK8 compatibility (#10493)
### What changes were proposed in this pull request?
This PR backports #10385 to `branch-1.1`.
The backport removes the Gradle `release` task usage from the CI/release
flow and centralizes the JDK8 compatibility logic in the root build
script, instead of keeping scattered module-local handling.
### Why are the changes needed?
`branch-1.1` still carries the same build/release-task coupling and JDK8
compatibility fragmentation fixed in main. Backporting this change keeps
the branch behavior aligned and avoids relying on the removed release
task path.
Fix: #10262
### Does this PR introduce _any_ user-facing change?
No.
### How was this patch tested?
Verified by compiling the directly affected modules:
```bash
./gradlew :api:compileJava :clients:client-java:compileTestJava -PskipITs
--console=plain
```
Co-authored-by: Jerry Shao <[email protected]>
---
.github/workflows/build.yml | 5 +--
build.gradle.kts | 82 +++++++++++++++++++-------------------------
dev/release/release-build.sh | 4 +--
3 files changed, 39 insertions(+), 52 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 8936a8e1c8..802ee99377 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -68,7 +68,7 @@ jobs:
- name: Build with Gradle
run: |
- ./gradlew release -x test
+ ./gradlew assemble
# To check the spark-connector is compatible with scala2.13
spark-connector-build:
@@ -144,9 +144,6 @@ jobs:
if: needs.changes.outputs.mcp_server_changes != 'true'
run: ./gradlew build -PskipITs -PskipDockerTests=false -x
:clients:client-python:build -x :mcp-server:build -x :mcp-server:test -x
:mcp-server:pylint
- - name: Release with Gradle
- run: ./gradlew clean && ./gradlew release -x test --rerun-tasks
-
- name: Upload unit tests report
uses: actions/upload-artifact@v4
if: failure()
diff --git a/build.gradle.kts b/build.gradle.kts
index 96089d9b8e..3a60735e15 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -24,6 +24,7 @@ import
com.github.jk1.license.render.InventoryHtmlReportRenderer
import com.github.jk1.license.render.ReportRenderer
import com.github.vlsi.gradle.dsl.configureEach
import net.ltgt.gradle.errorprone.errorprone
+import org.gradle.api.attributes.java.TargetJvmVersion
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import org.gradle.internal.hash.ChecksumService
import org.gradle.internal.os.OperatingSystem
@@ -313,30 +314,23 @@ subprojects {
mavenLocal()
}
- fun compatibleWithJDK8(project: Project): Boolean {
- val isReleaseRun = gradle.startParameter.taskNames.any { it == "release"
|| it == "publish" || it == "publishToMavenLocal" }
- if (!isReleaseRun) {
- return false
- }
+ val jdk8CompatibleProjectPathPrefixes = setOf(
+ ":api",
+ ":common",
+ ":catalogs:catalog-common",
+ ":catalogs:hadoop-common",
+ ":maintenance:jobs",
+ ":maintenance:optimizer-api",
+ ":maintenance:updaters",
+ ":clients",
+ ":bundles",
+ ":spark-connector",
+ ":flink-connector"
+ )
- val name = project.name.lowercase()
+ fun compatibleWithJDK8(project: Project): Boolean {
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
+ return jdk8CompatibleProjectPathPrefixes.any { path.startsWith(it) }
}
extensions.extraProperties.set("excludePackagesForSparkConnector",
::excludePackagesForSparkConnector)
@@ -372,12 +366,6 @@ subprojects {
}
}
- tasks.withType<JavaCompile>().configureEach {
- if (compatibleWithJDK8(project)) {
- options.release.set(8)
- }
- }
-
java {
toolchain {
// Some JDK vendors like Homebrew installed OpenJDK 17 have problems in
building trino-connector:
@@ -399,6 +387,24 @@ subprojects {
}
}
+ if (compatibleWithJDK8(project)) {
+ // Keep published/main classes Java 8-compatible for the selected modules.
+ tasks.named<JavaCompile>("compileJava") {
+ options.release.set(8)
+ }
+
+ // Tests still need Java 17 to compile against dependencies that only
publish Java 17 variants.
+ tasks.named<JavaCompile>("compileTestJava") {
+ options.release.set(17)
+ }
+
+ val targetJvmVersionAttribute =
TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE
+ configurations.matching { it.name in setOf("testCompileClasspath",
"testRuntimeClasspath") }
+ .configureEach {
+ attributes.attribute(targetJvmVersionAttribute, 17)
+ }
+ }
+
gradle.projectsEvaluated {
tasks.withType<JavaCompile> {
options.compilerArgs.addAll(
@@ -423,6 +429,8 @@ subprojects {
}
tasks.withType<JavaCompile>().configureEach {
+ // Keep Java compilation independent of the host's default charset.
+ options.encoding = "UTF-8"
options.errorprone.isEnabled.set(true)
options.errorprone.disableWarningsInGeneratedCode.set(true)
options.errorprone.disable(
@@ -1214,21 +1222,3 @@ fun checkOrbStackStatus() {
}
printDockerCheckInfo()
-
-tasks.register("release") {
- group = "release"
- description = "Builds and package a release version."
- doFirst {
- println("Releasing project...")
- }
-
- // Use 'assemble' instead of 'build' to skip tests during release
- // Tests have JDK version conflicts (some need JDK 8, some need JDK 17)
- // and should be run separately in CI/CD with appropriate JDK configurations
- // Only include subprojects that apply the Java plugin (exclude
client-python)
- dependsOn(
- subprojects
- .filter { it.name != "client-python" }
- .map { it.tasks.named("assemble") }
- )
-}
diff --git a/dev/release/release-build.sh b/dev/release/release-build.sh
index 5bd14b90eb..49d9e5b846 100755
--- a/dev/release/release-build.sh
+++ b/dev/release/release-build.sh
@@ -341,8 +341,8 @@ if [[ "$1" == "publish-release" ]]; then
cd ..
$GRADLE clean
- $GRADLE release -x test -PdefaultScalaVersion=2.12
- $GRADLE release -x test -PdefaultScalaVersion=2.13
+ $GRADLE assemble -PdefaultScalaVersion=2.12
+ $GRADLE assemble -PdefaultScalaVersion=2.13
$GRADLE -Dmaven.repo.local=$tmp_repo publishToMavenLocal
-PdefaultScalaVersion=2.12
$GRADLE -Dmaven.repo.local=$tmp_repo publishToMavenLocal
-PdefaultScalaVersion=2.13