diff --git a/alts/build.gradle b/alts/build.gradle index 4edd3c700e..9585eeef76 100644 --- a/alts/build.gradle +++ b/alts/build.gradle @@ -65,6 +65,9 @@ tasks.named("javadoc").configure { tasks.named("jar").configure { // Must use a different archiveClassifier to avoid conflicting with shadowJar archiveClassifier = 'original' + manifest { + attributes('Automatic-Module-Name': 'io.grpc.alts') + } } // We want to use grpc-netty-shaded instead of grpc-netty. But we also want our diff --git a/api/build.gradle b/api/build.gradle index 6906a2ae0d..384ab9be1c 100644 --- a/api/build.gradle +++ b/api/build.gradle @@ -21,6 +21,11 @@ compileContextJava { targetCompatibility = 1.7 } +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc') + } +} dependencies { compileOnly sourceSets.context.output diff --git a/auth/build.gradle b/auth/build.gradle index 73c108d520..3e9646533e 100644 --- a/auth/build.gradle +++ b/auth/build.gradle @@ -7,6 +7,13 @@ plugins { } description = "gRPC: Auth" + +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc.auth') + } +} + dependencies { api project(':grpc-api'), libraries.google.auth.credentials diff --git a/benchmarks/build.gradle b/benchmarks/build.gradle index 90251e6692..97ae628ab5 100644 --- a/benchmarks/build.gradle +++ b/benchmarks/build.gradle @@ -18,6 +18,12 @@ configurations { alpnagent } +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc.benchmarks') + } +} + dependencies { implementation project(':grpc-core'), project(':grpc-netty'), diff --git a/census/build.gradle b/census/build.gradle index 6c9a727857..15b68acbb0 100644 --- a/census/build.gradle +++ b/census/build.gradle @@ -7,6 +7,12 @@ plugins { description = 'gRPC: Census' +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc.census') + } +} + dependencies { api project(':grpc-api') // force dependent jars to depend on latest grpc-context diff --git a/core/build.gradle b/core/build.gradle index fa2e6f8302..a2b519c386 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -56,6 +56,12 @@ tasks.named("javadoc").configure { exclude 'io/grpc/perfmark/**' } +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc.internal') + } +} + animalsniffer { // Don't check sourceSets.jmh sourceSets = [ diff --git a/gcp-observability/build.gradle b/gcp-observability/build.gradle index e7e78849d6..69bff88bf0 100644 --- a/gcp-observability/build.gradle +++ b/gcp-observability/build.gradle @@ -19,6 +19,12 @@ tasks.named("compileJava").configure { "|") } +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc.gcp.observability') + } +} + dependencies { annotationProcessor libraries.auto.value api project(':grpc-api') diff --git a/googleapis/build.gradle b/googleapis/build.gradle index 72f5b97940..435e552d47 100644 --- a/googleapis/build.gradle +++ b/googleapis/build.gradle @@ -7,6 +7,12 @@ plugins { description = 'gRPC: googleapis' +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc.googleapis') + } +} + dependencies { api project(':grpc-api') implementation project(path: ':grpc-alts', configuration: 'shadow'), diff --git a/grpclb/build.gradle b/grpclb/build.gradle index eacfb48773..0eecbcd812 100644 --- a/grpclb/build.gradle +++ b/grpclb/build.gradle @@ -9,6 +9,12 @@ plugins { description = "gRPC: GRPCLB LoadBalancer plugin" +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc.grpclb') + } +} + dependencies { implementation project(':grpc-core'), project(':grpc-protobuf'), diff --git a/inprocess/build.gradle b/inprocess/build.gradle index 84293f6d8d..11a2be722c 100644 --- a/inprocess/build.gradle +++ b/inprocess/build.gradle @@ -7,6 +7,12 @@ plugins { description = 'gRPC: Inprocess' +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc.inprocess') + } +} + dependencies { api project(':grpc-core') diff --git a/netty/build.gradle b/netty/build.gradle index 0f22d27746..fff10d484d 100644 --- a/netty/build.gradle +++ b/netty/build.gradle @@ -13,6 +13,12 @@ configurations { alpnagent } +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc.netty') + } +} + dependencies { api project(':grpc-core'), libraries.netty.codec.http2 diff --git a/netty/shaded/build.gradle b/netty/shaded/build.gradle index 10410c959d..01c5bfc9eb 100644 --- a/netty/shaded/build.gradle +++ b/netty/shaded/build.gradle @@ -70,6 +70,9 @@ dependencies { tasks.named("jar").configure { // Must use a different archiveClassifier to avoid conflicting with shadowJar archiveClassifier = 'original' + manifest { + attributes('Automatic-Module-Name': 'io.grpc.netty.shaded') + } } tasks.named("shadowJar").configure { diff --git a/okhttp/build.gradle b/okhttp/build.gradle index 5665c0ff8f..7d84df436d 100644 --- a/okhttp/build.gradle +++ b/okhttp/build.gradle @@ -8,6 +8,12 @@ plugins { description = "gRPC: OkHttp" +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc.okhttp') + } +} + dependencies { api project(':grpc-util') implementation libraries.okio, diff --git a/protobuf-lite/build.gradle b/protobuf-lite/build.gradle index 0ada691913..11a49d4816 100644 --- a/protobuf-lite/build.gradle +++ b/protobuf-lite/build.gradle @@ -21,6 +21,12 @@ dependencies { signature libraries.signature.android } +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc.protobuf.lite') + } +} + tasks.named("compileTestJava").configure { options.compilerArgs += [ "-Xlint:-cast" diff --git a/protobuf/build.gradle b/protobuf/build.gradle index 47d08e1931..8220b7da0d 100644 --- a/protobuf/build.gradle +++ b/protobuf/build.gradle @@ -9,6 +9,12 @@ plugins { description = 'gRPC: Protobuf' +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc.protobuf') + } +} + dependencies { api project(':grpc-api'), libraries.jsr305, diff --git a/rls/build.gradle b/rls/build.gradle index e57af7b0c8..19e5027664 100644 --- a/rls/build.gradle +++ b/rls/build.gradle @@ -8,6 +8,12 @@ plugins { description = "gRPC: RouteLookupService Loadbalancing plugin" +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc.rls') + } +} + dependencies { implementation project(':grpc-util'), project(':grpc-protobuf'), diff --git a/services/build.gradle b/services/build.gradle index 57e3319200..f2a0ef62d3 100644 --- a/services/build.gradle +++ b/services/build.gradle @@ -16,6 +16,12 @@ tasks.named("compileJava").configure { ] } +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc.services') + } +} + dependencies { api project(':grpc-protobuf'), project(':grpc-stub'), diff --git a/servlet/build.gradle b/servlet/build.gradle index 582e99a361..3ed315b388 100644 --- a/servlet/build.gradle +++ b/servlet/build.gradle @@ -29,6 +29,12 @@ sourceSets { } } +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc.servlet') + } +} + dependencies { api project(':grpc-api') compileOnly 'javax.servlet:javax.servlet-api:4.0.1', diff --git a/servlet/jakarta/build.gradle b/servlet/jakarta/build.gradle index 782c24557b..8df1b93d83 100644 --- a/servlet/jakarta/build.gradle +++ b/servlet/jakarta/build.gradle @@ -69,6 +69,12 @@ tasks.withType(Checkstyle) { enabled = false } +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc.servlet.jakarta') + } +} + dependencies { api project(':grpc-api') compileOnly 'jakarta.servlet:jakarta.servlet-api:5.0.0', diff --git a/stub/build.gradle b/stub/build.gradle index 16a9ca2d99..971e476fb3 100644 --- a/stub/build.gradle +++ b/stub/build.gradle @@ -7,6 +7,13 @@ plugins { } description = "gRPC: Stub" + +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc.stub') + } +} + dependencies { api project(':grpc-api'), libraries.guava diff --git a/testing-proto/build.gradle b/testing-proto/build.gradle index 168c059e66..e6afce468f 100644 --- a/testing-proto/build.gradle +++ b/testing-proto/build.gradle @@ -8,6 +8,12 @@ plugins { description = "gRPC: Testing Protos" +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc.testing.protobuf') + } +} + dependencies { api project(':grpc-protobuf'), project(':grpc-stub') diff --git a/util/build.gradle b/util/build.gradle index b1babf60b3..af4e6044ef 100644 --- a/util/build.gradle +++ b/util/build.gradle @@ -8,6 +8,12 @@ plugins { description = 'gRPC: Util' +tasks.named("jar").configure { + manifest { + attributes('Automatic-Module-Name': 'io.grpc.util') + } +} + dependencies { api project(':grpc-core') diff --git a/xds/build.gradle b/xds/build.gradle index 60e30c5102..3e2b453103 100644 --- a/xds/build.gradle +++ b/xds/build.gradle @@ -140,6 +140,9 @@ tasks.named("compileJava").configure { tasks.named("jar").configure { archiveClassifier = 'original' + manifest { + attributes('Automatic-Module-Name': 'io.grpc.xds') + } } tasks.named("sourcesJar").configure {