iceberg/iceberg-rest-server/build.gradle.kts (144 lines of code) (raw):

/* * 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. */ description = "iceberg-rest-service" plugins { `maven-publish` id("java") id("idea") } val scalaVersion: String = project.properties["scalaVersion"] as? String ?: extra["defaultScalaVersion"].toString() val sparkVersion: String = libs.versions.spark34.get() val sparkMajorVersion: String = sparkVersion.substringBeforeLast(".") val icebergVersion: String = libs.versions.iceberg.get() val scalaCollectionCompatVersion: String = libs.versions.scala.collection.compat.get() dependencies { implementation(project(":api")) implementation(project(":catalogs:catalog-common")) implementation(project(":clients:client-java")) implementation(project(":core")) { exclude("*") } implementation(project(":common")) { exclude("*") } implementation(project(":iceberg:iceberg-common")) implementation(project(":server-common")) { exclude("*") } implementation(libs.bundles.iceberg) implementation(libs.bundles.jetty) implementation(libs.bundles.jersey) implementation(libs.bundles.log4j) implementation(libs.bundles.metrics) implementation(libs.bundles.prometheus) implementation(libs.caffeine) implementation(libs.commons.lang3) implementation(libs.guava) implementation(libs.jackson.annotations) implementation(libs.jackson.databind) implementation(libs.jackson.datatype.jdk8) implementation(libs.jackson.datatype.jsr310) implementation(libs.metrics.jersey2) annotationProcessor(libs.lombok) compileOnly(libs.lombok) // Iceberg doesn't provide Aliyun bundle jar, use Gravitino Aliyun bundle to provide OSS packages testImplementation(project(":bundles:aliyun-bundle")) testImplementation(project(":bundles:aws")) testImplementation(project(":bundles:gcp", configuration = "shadow")) testImplementation(project(":bundles:azure", configuration = "shadow")) testImplementation(project(":integration-test-common", "testArtifacts")) testImplementation("org.scala-lang.modules:scala-collection-compat_$scalaVersion:$scalaCollectionCompatVersion") testImplementation("org.apache.iceberg:iceberg-spark-runtime-${sparkMajorVersion}_$scalaVersion:$icebergVersion") testImplementation("org.apache.spark:spark-sql_$scalaVersion:$sparkVersion") { exclude("org.apache.avro") exclude("org.apache.hadoop") exclude("org.apache.zookeeper") exclude("io.dropwizard.metrics") exclude("org.rocksdb") } testImplementation(libs.iceberg.aws.bundle) testImplementation(libs.iceberg.gcp.bundle) // Prevent netty conflict testImplementation(libs.reactor.netty.http) testImplementation(libs.reactor.netty.core) testImplementation(libs.iceberg.azure.bundle) { exclude("io.netty") exclude("com.google.guava", "guava") } testImplementation(libs.jersey.test.framework.core) { exclude(group = "org.junit.jupiter") } testImplementation(libs.jersey.test.framework.provider.jetty) { exclude(group = "org.junit.jupiter") } testImplementation(libs.junit.jupiter.api) testImplementation(libs.junit.jupiter.params) testImplementation(libs.mockito.core) testImplementation(libs.sqlite.jdbc) testImplementation(libs.slf4j.api) testImplementation(libs.testcontainers) testRuntimeOnly(libs.junit.jupiter.engine) } tasks { val copyDepends by registering(Copy::class) { from(configurations.runtimeClasspath) into("build/libs") } jar { finalizedBy(copyDepends) } register("copyLibs", Copy::class) { dependsOn(copyDepends, "build") from("build/libs") into("$rootDir/distribution/package/iceberg-rest-server/libs") } register("copyLibsToStandalonePackage", Copy::class) { dependsOn(copyDepends, "build") from("build/libs") into("$rootDir/distribution/gravitino-iceberg-rest-server/libs") } register("copyConfigs", Copy::class) { from("src/main/resources") into("$rootDir/distribution/package/iceberg-rest-server/conf") include("core-site.xml.template") include("hdfs-site.xml.template") rename { original -> if (original.endsWith(".template")) { original.replace(".template", "") } else { original } } fileMode = 0b111101101 } register("copyConfigsToStandalonePackage", Copy::class) { from("src/main/resources") into("$rootDir/distribution/gravitino-iceberg-rest-server/conf") include("core-site.xml.template") include("hdfs-site.xml.template") rename { original -> if (original.endsWith(".template")) { original.replace(".template", "") } else { original } } fileMode = 0b111101101 } register("copyLibAndConfigs", Copy::class) { dependsOn("copyLibs", "copyConfigs") } register("copyLibAndConfigsToStandalonePackage", Copy::class) { dependsOn("copyLibsToStandalonePackage", "copyConfigsToStandalonePackage") } } tasks.test { val skipITs = project.hasProperty("skipITs") if (skipITs) { // Exclude integration tests exclude("**/integration/test/**") } else { dependsOn(tasks.jar) } } tasks.clean { delete("spark-warehouse") } tasks.getByName("generateMetadataFileForMavenJavaPublication") { dependsOn("copyDepends") }