diff --git a/aws-bundle/build.gradle b/aws-bundle/build.gradle index 5b9054812a50..f9d356a774f5 100644 --- a/aws-bundle/build.gradle +++ b/aws-bundle/build.gradle @@ -44,7 +44,7 @@ project(":iceberg-aws-bundle") { shadowJar { archiveClassifier.set(null) - zip64 true + zip64 = true // include the LICENSE and NOTICE files for the shaded Jar from(projectDir) { diff --git a/azure-bundle/build.gradle b/azure-bundle/build.gradle index 46d1b3daea5b..c19096394309 100644 --- a/azure-bundle/build.gradle +++ b/azure-bundle/build.gradle @@ -31,7 +31,7 @@ project(":iceberg-azure-bundle") { shadowJar { archiveClassifier.set(null) - zip64 true + zip64 = true // include the LICENSE and NOTICE files for the shaded Jar from(projectDir) { diff --git a/baseline.gradle b/baseline.gradle index 151fa40a1a28..c4840c49ae01 100644 --- a/baseline.gradle +++ b/baseline.gradle @@ -36,7 +36,7 @@ subprojects { // Thus we concede to applying all of the Baseline plugins individually on all the projects we are // ready to enforce linting on. - apply plugin: 'org.inferred.processors' + if (!project.hasProperty('quick')) { apply plugin: 'com.palantir.baseline-checkstyle' apply plugin: 'com.palantir.baseline-error-prone' @@ -49,7 +49,6 @@ subprojects { t.setReproducibleFileOrder(true); t.setDuplicatesStrategy(DuplicatesStrategy.WARN); }); - apply plugin: 'com.palantir.baseline-exact-dependencies' apply plugin: 'com.diffplug.spotless' pluginManager.withPlugin('com.diffplug.spotless') { diff --git a/bom/build.gradle b/bom/build.gradle new file mode 100644 index 000000000000..9db8aa2c5c5d --- /dev/null +++ b/bom/build.gradle @@ -0,0 +1,21 @@ +/* + * 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. + */ + +// This file is intentionally minimal - BOM configuration is in root build.gradle + diff --git a/build.gradle b/build.gradle index fcd6dcb78066..6afe8634268c 100644 --- a/build.gradle +++ b/build.gradle @@ -29,8 +29,10 @@ buildscript { classpath 'com.gradleup.shadow:shadow-gradle-plugin:8.3.9' classpath 'com.palantir.baseline:gradle-baseline-java:5.72.0' classpath 'com.diffplug.spotless:spotless-plugin-gradle:6.25.0' - classpath 'gradle.plugin.org.inferred:gradle-processors:3.7.0' classpath 'me.champeau.jmh:jmh-gradle-plugin:0.7.3' + // Commented out for Gradle 9.x compatibility - plugin uses deprecated 'convention' property + // Modern Gradle has native annotation processor support via annotationProcessor configuration + // classpath 'gradle.plugin.org.inferred:gradle-processors:3.7.0' classpath 'gradle.plugin.io.morethan.jmhreport:gradle-jmh-report:0.9.6' classpath "com.github.alisiikh:gradle-scalastyle-plugin:3.5.0" classpath 'org.revapi:gradle-revapi:1.8.0' @@ -239,7 +241,7 @@ subprojects { } else { events "failed" } - exceptionFormat "full" + exceptionFormat = "full" } systemProperty 'project.version', project.version @@ -274,7 +276,7 @@ project(':iceberg-bundled-guava') { shadowJar { archiveClassifier.set(null) configurations = [project.configurations.compileClasspath] - zip64 true + zip64 = true // include the LICENSE and NOTICE files for the shaded Jar from(projectDir) { @@ -428,7 +430,7 @@ project(':iceberg-data') { test { useJUnitPlatform() // Only for TestSplitScan as of Gradle 5.0+ - maxHeapSize '1500m' + maxHeapSize = '1500m' } } @@ -1024,7 +1026,8 @@ project(':iceberg-open-api') { dependencies { testImplementation project(':iceberg-api') testImplementation project(':iceberg-core') - testImplementation project(':iceberg-core').sourceSets.test.runtimeClasspath + testImplementation project(path: ':iceberg-core', configuration: 'testArtifacts') + testImplementation project(path: ':iceberg-api', configuration: 'testArtifacts') testImplementation(testFixtures(project(':iceberg-open-api'))) testImplementation libs.junit.jupiter @@ -1108,7 +1111,7 @@ project(':iceberg-open-api') { archiveClassifier.set(null) configurations = [project.configurations.testFixturesRuntimeClasspath] from sourceSets.testFixtures.output - zip64 true + zip64 = true // include the LICENSE and NOTICE files for the runtime Jar from(projectDir) { diff --git a/deploy.gradle b/deploy.gradle index 740d0056273b..9b3313350abc 100644 --- a/deploy.gradle +++ b/deploy.gradle @@ -33,13 +33,13 @@ subprojects { task sourceJar(type: Jar, dependsOn: classes) { archiveClassifier.set('sources') from sourceSets.main.allSource - group 'build' + group = 'build' } task javadocJar(type: Jar, dependsOn: javadoc) { archiveClassifier.set('javadoc') from javadoc.destinationDir - group 'build' + group = 'build' } task testJar(type: Jar) { @@ -124,8 +124,8 @@ subprojects { repositories { maven { credentials { - username project.hasProperty('mavenUser') ? "$mavenUser" : "" - password project.hasProperty('mavenPassword') ? "$mavenPassword" : "" + username = project.hasProperty('mavenUser') ? "$mavenUser" : "" + password = project.hasProperty('mavenPassword') ? "$mavenPassword" : "" } // upload to the releases repository using ./gradlew -Prelease publish def apacheSnapshotsRepoUrl = 'https://repository.apache.org/content/repositories/snapshots' diff --git a/flink/v2.1/build.gradle b/flink/v2.1/build.gradle index 91081bdc2e42..192e753fac7e 100644 --- a/flink/v2.1/build.gradle +++ b/flink/v2.1/build.gradle @@ -226,7 +226,7 @@ project(":iceberg-flink:iceberg-flink-runtime-${flinkMajorVersion}") { shadowJar { configurations = [project.configurations.runtimeClasspath] - zip64 true + zip64 = true // include the LICENSE and NOTICE files for the shaded Jar from(projectDir) { @@ -255,6 +255,7 @@ project(":iceberg-flink:iceberg-flink-runtime-${flinkMajorVersion}") { task integrationTest(type: Test) { description = "Test Flink Runtime Jar against Flink ${flinkMajorVersion}" group = "verification" + failOnNoDiscoveredTests = false jvmArgs += project.property('extraJvmArgs') testClassesDirs = sourceSets.integration.output.classesDirs classpath = sourceSets.integration.runtimeClasspath + files(shadowJar.archiveFile.get().asFile.path) diff --git a/gcp-bundle/build.gradle b/gcp-bundle/build.gradle index 99e4359bd6d0..03dbdc399043 100644 --- a/gcp-bundle/build.gradle +++ b/gcp-bundle/build.gradle @@ -33,7 +33,7 @@ project(":iceberg-gcp-bundle") { shadowJar { archiveClassifier.set(null) - zip64 true + zip64 = true // include the LICENSE and NOTICE files for the shaded Jar from(projectDir) { diff --git a/gradle.properties b/gradle.properties index 0f70b49eb722..134dc865ef5b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -28,8 +28,7 @@ systemProp.knownScalaVersions=2.12,2.13 org.gradle.caching=true # enable Gradle parallel builds org.gradle.parallel=true -# configure only necessary Gradle tasks -org.gradle.configureondemand=true +# Note: org.gradle.configureondemand has been removed as it is deprecated in Gradle 9.x # explicitly disable the configuration cache org.gradle.configuration-cache=false org.gradle.jvmargs=-Xmx1536m diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 78cb6e16a49f..49ab6fc3f247 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=bd71102213493060956ec229d946beee57158dbd89d0e62b91bca0fa2c5f3531 -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip +distributionSha256Sum=df67a32e86e3276d011735facb1535f64d0d88df84fa87521e90becc2d735444 +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/mr/build.gradle b/mr/build.gradle index dac7e3d4542b..6efffae6546b 100644 --- a/mr/build.gradle +++ b/mr/build.gradle @@ -76,7 +76,7 @@ project(':iceberg-mr') { test { // testJoinTables / testScanTable - maxHeapSize '2500m' + maxHeapSize = '2500m' } } diff --git a/spark/v4.0/build.gradle b/spark/v4.0/build.gradle index 8ebed9bd439b..0d87827447ca 100644 --- a/spark/v4.0/build.gradle +++ b/spark/v4.0/build.gradle @@ -132,7 +132,7 @@ project(":iceberg-spark:iceberg-spark-${sparkMajorVersion}_${scalaVersion}") { tasks.withType(Test) { // Vectorized reads need more memory - maxHeapSize '3160m' + maxHeapSize = '3160m' } } @@ -296,7 +296,7 @@ project(":iceberg-spark:iceberg-spark-runtime-${sparkMajorVersion}_${scalaVersio shadowJar { configurations = [project.configurations.runtimeClasspath] - zip64 true + zip64 = true // include the LICENSE and NOTICE files for the shaded Jar from(projectDir) { diff --git a/tasks.gradle b/tasks.gradle index 5515d7b75052..42e7b30877bd 100644 --- a/tasks.gradle +++ b/tasks.gradle @@ -22,7 +22,7 @@ task aggregateJavadoc(type: Javadoc) { def javadocTasks = subprojects.findAll { it.name != 'iceberg-bom' }.javadoc dependsOn javadocTasks source javadocTasks.source - destinationDir project.rootProject.file("site/docs/javadoc/${getJavadocVersion()}") + destinationDir = project.rootProject.file("site/docs/javadoc/${getJavadocVersion()}") classpath = project.rootProject.files(javadocTasks.classpath) final JAVADOC_FIX_SEARCH_STR = '\n\n' +