diff --git a/build.gradle.kts b/build.gradle.kts
index 819a2c94290..d8b759e990c 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -44,8 +44,18 @@ afterEvaluate {
javadoc {
title = "Smithy API ${version}"
setDestinationDir(layout.buildDirectory.dir("docs/javadoc/latest").get().asFile)
- source(subprojects.map { project(it.path).sourceSets.main.get().allJava })
- classpath = files(subprojects.map { project(it.path).sourceSets.main.get().compileClasspath })
+
+ // Add an explicit dependencies on the compilation of each subproject because we need
+ // the compile classpath, which we can only get after the compile task has completed.
+ dependsOn(subprojects.map { it.tasks.named("compileJava") })
+ classpath = files(provider {
+ subprojects.flatMap { subproject ->
+ subproject.configurations.getByName("compileClasspath").resolve()
+ }
+ })
+
+ source(provider { subprojects.map { project -> project.sourceSets.main.get().allJava } })
+
(options as StandardJavadocDocletOptions).apply {
addStringOption("Xdoclint:-html", "-quiet")
}
diff --git a/config/spotbugs/filter.xml b/config/spotbugs/filter.xml
index 6173aff2055..6188a7e3059 100644
--- a/config/spotbugs/filter.xml
+++ b/config/spotbugs/filter.xml
@@ -194,6 +194,15 @@
+
+
+
+
+
+
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 54f31fa62ed..5530577f8f2 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,13 +1,14 @@
[versions]
junit5 = "5.13.4"
hamcrest = "3.0"
-jmh = "0.6.6"
-spotbugs = "6.0.22"
+jmh = "0.7.2"
+spotbugs = "6.2.4"
spotless = "7.2.1"
smithy-gradle = "1.3.0"
assertj = "3.27.4"
prettier4j = "0.3.0"
maven-resolver-provider = "3.9.11"
+# TODO: upgrade major version
maven-resolver = "1.9.24"
slf4j = "1.7.36"
mockserver = "5.15.0"
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 9bbc975c742..1b33c55baab 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 37f853b1c84..d4081da476b 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/gradlew b/gradlew
index faf93008b77..23d15a93670 100755
--- a/gradlew
+++ b/gradlew
@@ -114,7 +114,7 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM.
@@ -213,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
- org.gradle.wrapper.GradleWrapperMain \
+ -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.
diff --git a/gradlew.bat b/gradlew.bat
index 9b42019c791..5eed7ee8452 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -70,11 +70,11 @@ goto fail
:execute
@rem Setup the command line
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+set CLASSPATH=
@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell