From 2bcb078bf5a9c6205c86f4992070ae890e6b0a5f Mon Sep 17 00:00:00 2001 From: Xun Liu Date: Thu, 14 Sep 2023 20:30:40 +0800 Subject: [PATCH] [#391] feat(catalog-lakehouse): Build catalog-lakehouse dependent JAR into catalogs directory (#394) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### What changes were proposed in this pull request? + Added `catalog-lakehouse` job in the Gradle build scripts. + Use better names for some jobs ``` ├── bin ├── conf └── distribution/package ├── bin/ ├── catalogs/hive/libs ├── catalogs/lakehouse/libs ├── conf/ └── libs/ ``` ### Why are the changes needed? Currently, building `catalog-lakehouse` module can't move dependent JAR into `${graviton}/distribution/package/catalogs/`. It may be in conflict with Graviton. Fix: #391 ### Does this PR introduce _any_ user-facing change? N/A ### How was this patch tested? CI passed --- build.gradle.kts | 48 +++++++++++------------------- catalog-hive/build.gradle.kts | 13 ++++++++ catalog-lakehouse/build.gradle.kts | 12 ++++++++ 3 files changed, 42 insertions(+), 31 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index e9686aacf0..67a754f476 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -40,7 +40,7 @@ subprojects { } tasks.configureEach { - // Integration test module are tested sepatately + // Integration test module are tested separately if (project.name != "integration-test") { useJUnitPlatform() finalizedBy(tasks.getByName("jacocoTestReport")) @@ -79,14 +79,14 @@ subprojects { removeUnusedImports() trimTrailingWhitespace() replaceRegex( - "Remove wildcard imports", - "import\\s+[^\\*\\s]+\\*;(\\r\\n|\\r|\\n)", - "$1" + "Remove wildcard imports", + "import\\s+[^\\*\\s]+\\*;(\\r\\n|\\r|\\n)", + "$1" ) replaceRegex( - "Remove static wildcard imports", - "import\\s+(?:static\\s+)?[^*\\s]+\\*;(\\r\\n|\\r|\\n)", - "$1" + "Remove static wildcard imports", + "import\\s+(?:static\\s+)?[^*\\s]+\\*;(\\r\\n|\\r|\\n)", + "$1" ) targetExclude("**/build/**") @@ -153,7 +153,7 @@ tasks { val outputDir = projectDir.dir("distribution") val compileDistribution by registering { - dependsOn("copyRuntimeClass", "copyCatalogRuntimeClass", "copySubmoduleClass", "copyCatalogModuleClass") + dependsOn("copySubprojectDepends", "copyCatalogLibs", "copySubprojectLib") group = "graviton distribution" outputs.dir(projectDir.dir("distribution/package")) @@ -205,30 +205,20 @@ tasks { delete("server/src/main/resources/project.properties") } - val copyRuntimeClass by registering(Copy::class) { + val copySubprojectDepends by registering(Copy::class) { + dependsOn(":catalog-hive:copyDepends", ":catalog-lakehouse:copyDepends") subprojects.forEach() { - if (it.name != "catalog-hive" && it.name != "client-java" && it.name != "integration-test") { - println("copyRuntimeClass: ${it.name}") + if (it.name != "catalog-hive" && it.name != "client-java" && it.name != "integration-test" && it.name != "catalog-lakehouse") { from(it.configurations.runtimeClasspath) into("distribution/package/libs") } } } - val copyCatalogRuntimeClass by registering(Copy::class) { + val copySubprojectLib by registering(Copy::class) { subprojects.forEach() { - if (it.name == "catalog-hive") { - // println("copyCatalogRuntimeClass: ${it.name}") - from(it.configurations.runtimeClasspath) - into("distribution/package/catalogs/hive/libs") - } - } - } - - val copySubmoduleClass by registering(Copy::class) { - dependsOn("copyRuntimeClass", "copyCatalogRuntimeClass") - subprojects.forEach() { - if (it.name != "client-java" && it.name != "integration-test" && it.name != "catalog-hive") { + if (it.name != "client-java" && it.name != "integration-test" && it.name != "catalog-hive" && it.name != "catalog-lakehouse") { + dependsOn("${it.name}:build") from("${it.name}/build/libs") into("distribution/package/libs") include("*.jar") @@ -237,16 +227,12 @@ tasks { } } - val copyCatalogModuleClass by registering(Copy::class) { - subprojects.forEach() { - if (it.name == "catalog-hive") { - from("${it.name}/build/libs") - into("distribution/package/catalogs/hive/libs") - } - } + val copyCatalogLibs by registering(Copy::class) { + dependsOn(":catalog-hive:copyCatalogLibs", ":catalog-lakehouse:copyCatalogLibs") } task("integrationTest") { + mustRunAfter(":catalog-hive:copyDepends", ":catalog-lakehouse:copyDepends") dependsOn(":integration-test:integrationTest") } diff --git a/catalog-hive/build.gradle.kts b/catalog-hive/build.gradle.kts index 25fdc2a34c..35c548296d 100644 --- a/catalog-hive/build.gradle.kts +++ b/catalog-hive/build.gradle.kts @@ -79,3 +79,16 @@ dependencies { testRuntimeOnly(libs.junit.jupiter.engine) testImplementation(libs.mockito.core) } + +tasks { + val copyDepends by registering(Copy::class) { + from(configurations.runtimeClasspath) + into("build/libs") + } + + val copyCatalogLibs by registering(Copy::class) { + dependsOn(copyDepends) + from("build/libs") + into("${rootDir}/distribution/package/catalogs/hive/libs") + } +} diff --git a/catalog-lakehouse/build.gradle.kts b/catalog-lakehouse/build.gradle.kts index f067d30709..559f167ad4 100644 --- a/catalog-lakehouse/build.gradle.kts +++ b/catalog-lakehouse/build.gradle.kts @@ -39,3 +39,15 @@ dependencies { exclude(group = "org.junit.jupiter") } } + +tasks { + val copyDepends by registering(Copy::class) { + from(configurations.runtimeClasspath) + into("build/libs") + } + val copyCatalogLibs by registering(Copy::class) { + dependsOn(copyDepends) + from("build/libs") + into("${rootDir}/distribution/package/catalogs/lakehouse/libs") + } +}