diff --git a/MODULE.bazel b/MODULE.bazel index 4c7e1b3dca..7131affbdf 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -8,7 +8,7 @@ module( # GRPC_DEPS_START IO_GRPC_GRPC_JAVA_ARTIFACTS = [ "com.google.android:annotations:4.1.1.4", - "com.google.api.grpc:proto-google-common-protos:2.48.0", + "com.google.api.grpc:proto-google-common-protos:2.51.0", "com.google.auth:google-auth-library-credentials:1.24.1", "com.google.auth:google-auth-library-oauth2-http:1.24.1", "com.google.auto.value:auto-value-annotations:1.11.0", @@ -18,7 +18,7 @@ IO_GRPC_GRPC_JAVA_ARTIFACTS = [ "com.google.errorprone:error_prone_annotations:2.30.0", "com.google.guava:failureaccess:1.0.1", "com.google.guava:guava:33.3.1-android", - "com.google.re2j:re2j:1.7", + "com.google.re2j:re2j:1.8", "com.google.truth:truth:1.4.2", "com.squareup.okhttp:okhttp:2.7.5", "com.squareup.okio:okio:2.10.0", # 3.0+ needs swapping to -jvm; need work to avoid flag-day diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 43ec3368b7..c1554d6b2e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,18 +11,20 @@ protobuf = "3.25.5" [libraries] android-annotations = "com.google.android:annotations:4.1.1.4" androidx-annotation = "androidx.annotation:annotation:1.9.0" +# 1.15.0 requires libraries and applications that depend on it to compile against +# version 35 or later of the Android APIs. androidx-core = "androidx.core:core:1.13.1" -androidx-lifecycle-common = "androidx.lifecycle:lifecycle-common:2.8.6" -androidx-lifecycle-service = "androidx.lifecycle:lifecycle-service:2.8.6" +androidx-lifecycle-common = "androidx.lifecycle:lifecycle-common:2.8.7" +androidx-lifecycle-service = "androidx.lifecycle:lifecycle-service:2.8.7" androidx-test-core = "androidx.test:core:1.6.1" androidx-test-ext-junit = "androidx.test.ext:junit:1.2.1" androidx-test-rules = "androidx.test:rules:1.6.1" animalsniffer = "org.codehaus.mojo:animal-sniffer:1.24" animalsniffer-annotations = "org.codehaus.mojo:animal-sniffer-annotations:1.24" -assertj-core = "org.assertj:assertj-core:3.26.3" +assertj-core = "org.assertj:assertj-core:3.27.3" auto-value = "com.google.auto.value:auto-value:1.11.0" auto-value-annotations = "com.google.auto.value:auto-value-annotations:1.11.0" -checkstyle = "com.puppycrawl.tools:checkstyle:10.19.0" +checkstyle = "com.puppycrawl.tools:checkstyle:10.21.2" commons-math3 = "org.apache.commons:commons-math3:3.6.1" conscrypt = "org.conscrypt:conscrypt-openjdk-uber:2.5.2" cronet-api = "org.chromium.net:cronet-api:119.6045.31" @@ -34,14 +36,16 @@ cronet-embedded = "org.chromium.net:cronet-embedded:119.6045.31" errorprone-annotations = "com.google.errorprone:error_prone_annotations:2.30.0" # error-prone 2.32.0+ require Java 17+ errorprone-core = "com.google.errorprone:error_prone_core:2.31.0" -google-api-protos = "com.google.api.grpc:proto-google-common-protos:2.48.0" +google-api-protos = "com.google.api.grpc:proto-google-common-protos:2.51.0" # google-auth-library 1.25.0+ requires error_prone_annotations 2.31.0+, which # breaks the Android build google-auth-credentials = "com.google.auth:google-auth-library-credentials:1.24.1" google-auth-oauth2Http = "com.google.auth:google-auth-library-oauth2-http:1.24.1" # Release notes: https://cloud.google.com/logging/docs/release-notes -google-cloud-logging = "com.google.cloud:google-cloud-logging:3.20.6" +google-cloud-logging = "com.google.cloud:google-cloud-logging:3.21.2" +# 2.12.1 requires error_prone_annotations:2.36.0 but we are stuck with 2.30.0 gson = "com.google.code.gson:gson:2.11.0" +# 33.4.0 requires com.google.errorprone:error_prone_annotations:2.36.0 but we are stuck with 2.30.0 (see above) guava = "com.google.guava:guava:33.3.1-android" guava-betaChecker = "com.google.guava:guava-beta-checker:1.0" guava-testlib = "com.google.guava:guava-testlib:33.3.1-android" @@ -51,13 +55,15 @@ guava-jre = "com.google.guava:guava:33.3.1-jre" hdrhistogram = "org.hdrhistogram:HdrHistogram:2.2.2" # 6.0.0+ use java.lang.Deprecated forRemoval and since from Java 9 jakarta-servlet-api = "jakarta.servlet:jakarta.servlet-api:5.0.0" +# Using javax.annotation is fine as it is part of the JDK, we don't want to depend on J2EE +# where it is relocated to as org.apache.tomcat:tomcat-annotations-api. See issue #9179. javax-annotation = "org.apache.tomcat:annotations-api:6.0.53" javax-servlet-api = "javax.servlet:javax.servlet-api:4.0.1" # 12.0.0+ require Java 17+ jetty-client = "org.eclipse.jetty:jetty-client:11.0.24" -jetty-http2-server = "org.eclipse.jetty.http2:http2-server:11.0.24" +jetty-http2-server = "org.eclipse.jetty.http2:jetty-http2-server:12.0.16" jetty-http2-server10 = "org.eclipse.jetty.http2:http2-server:10.0.20" -jetty-servlet = "org.eclipse.jetty:jetty-servlet:11.0.24" +jetty-servlet = "org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.16" jetty-servlet10 = "org.eclipse.jetty:jetty-servlet:10.0.20" jsr305 = "com.google.code.findbugs:jsr305:3.0.2" junit = "junit:junit:4.13.2" @@ -85,18 +91,18 @@ opencensus-contrib-grpc-metrics = { module = "io.opencensus:opencensus-contrib-g opencensus-exporter-stats-stackdriver = { module = "io.opencensus:opencensus-exporter-stats-stackdriver", version.ref = "opencensus" } opencensus-exporter-trace-stackdriver = { module = "io.opencensus:opencensus-exporter-trace-stackdriver", version.ref = "opencensus" } opencensus-impl = { module = "io.opencensus:opencensus-impl", version.ref = "opencensus" } -opentelemetry-api = "io.opentelemetry:opentelemetry-api:1.43.0" -opentelemetry-exporter-prometheus = "io.opentelemetry:opentelemetry-exporter-prometheus:1.43.0-alpha" -opentelemetry-gcp-resources = "io.opentelemetry.contrib:opentelemetry-gcp-resources:1.40.0-alpha" -opentelemetry-sdk-extension-autoconfigure = "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.43.0" -opentelemetry-sdk-testing = "io.opentelemetry:opentelemetry-sdk-testing:1.43.0" +opentelemetry-api = "io.opentelemetry:opentelemetry-api:1.46.0" +opentelemetry-exporter-prometheus = "io.opentelemetry:opentelemetry-exporter-prometheus:1.46.0-alpha" +opentelemetry-gcp-resources = "io.opentelemetry.contrib:opentelemetry-gcp-resources:1.43.0-alpha" +opentelemetry-sdk-extension-autoconfigure = "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.46.0" +opentelemetry-sdk-testing = "io.opentelemetry:opentelemetry-sdk-testing:1.46.0" perfmark-api = "io.perfmark:perfmark-api:0.27.0" protobuf-java = { module = "com.google.protobuf:protobuf-java", version.ref = "protobuf" } protobuf-java-util = { module = "com.google.protobuf:protobuf-java-util", version.ref = "protobuf" } protobuf-javalite = { module = "com.google.protobuf:protobuf-javalite", version.ref = "protobuf" } protobuf-protoc = { module = "com.google.protobuf:protoc", version.ref = "protobuf" } -re2j = "com.google.re2j:re2j:1.7" -robolectric = "org.robolectric:robolectric:4.13" +re2j = "com.google.re2j:re2j:1.8" +robolectric = "org.robolectric:robolectric:4.14.1" signature-android = "net.sf.androidscents.signature:android-api-level-21:5.0.1_r2" signature-java = "org.codehaus.mojo.signature:java18:1.0" # 11.0.0+ require Java 17+ @@ -109,5 +115,5 @@ undertow-servlet = "io.undertow:undertow-servlet:2.3.18.Final" # Do not update: Pinned to the last version supporting Java 8. # See https://checkstyle.sourceforge.io/releasenotes.html#Release_10.1 checkstylejava8 = "com.puppycrawl.tools:checkstyle:9.3" -# See https://github.com/google/error-prone/releases/tag/v2.11.0 +# 2.11.0+ requires JDK 11+ (See https://github.com/google/error-prone/releases/tag/v2.11.0) errorprone-corejava8 = "com.google.errorprone:error_prone_core:2.10.0" diff --git a/repositories.bzl b/repositories.bzl index 3f4cd11c1a..b431b283a9 100644 --- a/repositories.bzl +++ b/repositories.bzl @@ -12,7 +12,7 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # GRPC_DEPS_START IO_GRPC_GRPC_JAVA_ARTIFACTS = [ "com.google.android:annotations:4.1.1.4", - "com.google.api.grpc:proto-google-common-protos:2.48.0", + "com.google.api.grpc:proto-google-common-protos:2.51.0", "com.google.auth:google-auth-library-credentials:1.24.1", "com.google.auth:google-auth-library-oauth2-http:1.24.1", "com.google.auto.value:auto-value-annotations:1.11.0", @@ -22,7 +22,7 @@ IO_GRPC_GRPC_JAVA_ARTIFACTS = [ "com.google.errorprone:error_prone_annotations:2.30.0", "com.google.guava:failureaccess:1.0.1", "com.google.guava:guava:33.3.1-android", - "com.google.re2j:re2j:1.7", + "com.google.re2j:re2j:1.8", "com.google.truth:truth:1.4.2", "com.squareup.okhttp:okhttp:2.7.5", "com.squareup.okio:okio:2.10.0", # 3.0+ needs swapping to -jvm; need work to avoid flag-day diff --git a/servlet/jakarta/build.gradle b/servlet/jakarta/build.gradle index 51333856dd..d1ebc1d4dc 100644 --- a/servlet/jakarta/build.gradle +++ b/servlet/jakarta/build.gradle @@ -8,13 +8,15 @@ description = "gRPC: Jakarta Servlet" // Set up classpaths and source directories for different servlet tests sourceSets { - // Only run these tests if java 11+ is being used - if (JavaVersion.current().isJava11Compatible()) { + // Only run these tests if the required minimum Java version is being used + if (JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_17)) { jettyTest { java { include '**/Jetty*.java' } } + } + if (JavaVersion.current().isJava11Compatible()) { tomcatTest { java { include '**/Tomcat*.java' @@ -50,6 +52,8 @@ def migrate(String name, String inputDir, SourceSet sourceSet) { filter { String line -> line.replace('javax.servlet', 'jakarta.servlet') .replace('io.grpc.servlet', 'io.grpc.servlet.jakarta') + .replace('org.eclipse.jetty.http2.parser', 'org.eclipse.jetty.http2') + .replace('org.eclipse.jetty.servlet', 'org.eclipse.jetty.ee10.servlet') } } } @@ -57,9 +61,11 @@ def migrate(String name, String inputDir, SourceSet sourceSet) { migrate('main', '../src/main/java', sourceSets.main) -// Only build sourceSets and classpaths for tests if using Java 11 -if (JavaVersion.current().isJava11Compatible()) { +// Only build sourceSets and classpaths for tests if using the required minimum Java version +if (JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_17)) { migrate('jettyTest', '../src/jettyTest/java', sourceSets.jettyTest) +} +if (JavaVersion.current().isJava11Compatible()) { migrate('tomcatTest', '../src/tomcatTest/java', sourceSets.tomcatTest) migrate('undertowTest', '../src/undertowTest/java', sourceSets.undertowTest) } @@ -104,12 +110,19 @@ dependencies { // Set up individual classpaths for each test, to avoid any mismatch, // and ensure they are only used when supported by the current jvm -if (JavaVersion.current().isJava11Compatible()) { +if (JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_17)) { def jetty11Test = tasks.register('jetty11Test', Test) { classpath = sourceSets.jettyTest.runtimeClasspath testClassesDirs = sourceSets.jettyTest.output.classesDirs } - + tasks.named('compileJettyTestJava') { JavaCompile task -> + task.options.release.set 9 + } + tasks.named("check").configure { + dependsOn jetty11Test + } +} +if (JavaVersion.current().isJava11Compatible()) { def tomcat10Test = tasks.register('tomcat10Test', Test) { classpath = sourceSets.tomcatTest.runtimeClasspath testClassesDirs = sourceSets.tomcatTest.output.classesDirs @@ -134,6 +147,6 @@ if (JavaVersion.current().isJava11Compatible()) { } tasks.named("check").configure { - dependsOn jetty11Test, tomcat10Test, undertowTest + dependsOn tomcat10Test, undertowTest } }