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

yuqi1129 pushed a commit to branch branch-1.3
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/branch-1.3 by this push:
     new 9de6415413 [Cherry-pick to branch-1.3] [#11164] improvement(build): 
Clean distribution package before copying files (#11180) (#11333)
9de6415413 is described below

commit 9de64154132eb912e2a848cee48a5b840d8e3fe6
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Tue Jun 2 14:11:06 2026 +0800

    [Cherry-pick to branch-1.3] [#11164] improvement(build): Clean distribution 
package before copying files (#11180) (#11333)
    
    **Cherry-pick Information:**
    - Original commit: 47033f452080d843239d6d16ccccdd6f13e44150
    - Target branch: `branch-1.3`
    - Status: ✅ Clean cherry-pick (no conflicts)
    
    Co-authored-by: ningsh7 <[email protected]>
---
 build.gradle.kts | 46 ++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 42 insertions(+), 4 deletions(-)

diff --git a/build.gradle.kts b/build.gradle.kts
index 2539a1d964..a80e5b54f2 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -69,6 +69,9 @@ if (scalaVersion !in listOf("2.12", "2.13")) {
 }
 
 val skipWeb: Boolean = (project.findProperty("skipWeb") as? 
String)?.toBoolean() ?: false
+val distributionPackageDir = 
layout.projectDirectory.dir("distribution/package")
+val distributionPackageAllDir = 
layout.projectDirectory.dir("distribution/package-all")
+val subprojectJarOutputDirs = subprojects.map { 
it.layout.buildDirectory.dir("libs") }
 
 project.extra["extraJvmArgs"] =
   listOf(
@@ -790,6 +793,12 @@ jacoco {
 tasks {
   val projectDir = layout.projectDirectory
   val outputDir = projectDir.dir("distribution")
+  val cleanDistributionPackage by registering(Delete::class) {
+    group = "gravitino distribution"
+    delete(distributionPackageDir, distributionPackageAllDir)
+    delete(subprojectJarOutputDirs)
+  }
+
   val compileDistribution by registering {
     val dependencies =
       mutableListOf(
@@ -808,10 +817,12 @@ tasks {
       dependencies.add(":web:web:build")
       dependencies.add(":web-v2:web:build")
     }
+    dependsOn(cleanDistributionPackage)
     dependsOn(dependencies)
 
     group = "gravitino distribution"
-    outputs.dir(projectDir.dir("distribution/package"))
+    outputs.dir(distributionPackageDir)
+    outputs.dir(distributionPackageAllDir)
     doLast {
       copy {
         from(projectDir.dir("conf")) { into("package/conf") }
@@ -867,8 +878,8 @@ tasks {
 
       // Copy the all directory distribution/package to 
distribution/package-all
       copy {
-        from(projectDir.dir("distribution/package"))
-        into(projectDir.dir("distribution/package-all"))
+        from(distributionPackageDir)
+        into(distributionPackageAllDir)
       }
 
       // remove catalogs-contrib modules from distribution/package
@@ -978,6 +989,7 @@ tasks {
 
   val assembleDistribution by registering(Tar::class) {
     dependsOn(
+      compileDistribution,
       ":trino-connector:trino-connector-435-439:assembleTrinoConnector",
       ":trino-connector:trino-connector-440-445:assembleTrinoConnector",
       ":trino-connector:trino-connector-446-451:assembleTrinoConnector",
@@ -990,7 +1002,7 @@ tasks {
     group = "gravitino distribution"
     finalizedBy("checksumDistribution")
     into("${rootProject.name}-$version-bin")
-    from(compileDistribution.map { it.outputs.files.single() })
+    from(distributionPackageDir)
     compression = Compression.GZIP
     archiveFileName.set("${rootProject.name}-$version-bin.tar.gz")
     destinationDirectory.set(projectDir.dir("distribution"))
@@ -1210,6 +1222,32 @@ tasks {
   }
 }
 
+gradle.projectsEvaluated {
+  val cleanDistributionPackageTask = 
rootProject.tasks.named("cleanDistributionPackage")
+  val distributionPackagePaths =
+    listOf(distributionPackageDir, distributionPackageAllDir)
+      .map { it.asFile.toPath().toAbsolutePath().normalize() }
+  val subprojectJarOutputPaths =
+    subprojectJarOutputDirs.map { 
it.get().asFile.toPath().toAbsolutePath().normalize() }
+
+  allprojects {
+    tasks.withType<Jar>().configureEach {
+      mustRunAfter(cleanDistributionPackageTask)
+    }
+
+    tasks.withType<Copy>().configureEach {
+      val copyDestinationDir = destinationDir ?: return@configureEach
+      val destinationPath = 
copyDestinationDir.toPath().toAbsolutePath().normalize()
+      if (distributionPackagePaths.any { destinationPath.startsWith(it) }) {
+        dependsOn(cleanDistributionPackageTask)
+      }
+      if (subprojectJarOutputPaths.any { destinationPath.startsWith(it) }) {
+        mustRunAfter(cleanDistributionPackageTask)
+      }
+    }
+  }
+}
+
 apply(plugin = "com.dorongold.task-tree")
 
 project.extra["dockerTest"] = false

Reply via email to