| plugins { |
| id "java" |
| id "maven-publish" |
| |
| id "com.github.johnrengelman.shadow" |
| id "com.google.protobuf" |
| id "ru.vyarus.animalsniffer" |
| } |
| |
| description = "gRPC: XDS plugin" |
| |
| [compileJava].each() { |
| it.options.compilerArgs += [ |
| // valueOf(int) in RoutingPriority has been deprecated |
| "-Xlint:-deprecation", |
| ] |
| } |
| |
| evaluationDependsOn(project(':grpc-core').path) |
| |
| dependencies { |
| implementation project(':grpc-protobuf'), |
| project(':grpc-stub'), |
| project(':grpc-core'), |
| project(':grpc-services'), |
| project(':grpc-auth'), |
| project(path: ':grpc-alts', configuration: 'shadow'), |
| libraries.gson, |
| libraries.re2j, |
| libraries.bouncycastle |
| def nettyDependency = implementation project(':grpc-netty') |
| |
| implementation (libraries.opencensus_proto) { |
| // prefer our own versions instead of opencensus_proto's |
| exclude group: 'com.google.protobuf', module: 'protobuf-java' |
| exclude group: 'io.grpc', module: 'grpc-protobuf' |
| exclude group: 'io.grpc', module: 'grpc-stub' |
| } |
| implementation (libraries.protobuf_util) { |
| // prefer our own versions instead of protobuf-util's dependency |
| exclude group: 'com.google.guava', module: 'guava' |
| exclude group: 'com.google.errorprone', module: 'error_prone_annotations' |
| } |
| |
| testImplementation project(':grpc-core').sourceSets.test.output |
| |
| compileOnly libraries.javax_annotation, |
| // At runtime use the epoll included in grpc-netty-shaded |
| libraries.netty_epoll |
| |
| testImplementation project(':grpc-testing'), |
| project(':grpc-testing-proto'), |
| libraries.netty_epoll |
| testImplementation (libraries.guava_testlib) { |
| exclude group: 'junit', module: 'junit' |
| } |
| |
| shadow configurations.implementation.getDependencies().minus([nettyDependency]) |
| shadow project(path: ':grpc-netty-shaded', configuration: 'shadow') |
| |
| signature "org.codehaus.mojo.signature:java17:1.0@signature" |
| testRuntimeOnly libraries.netty_tcnative |
| } |
| |
| sourceSets { |
| main { |
| proto { |
| srcDir 'third_party/envoy/src/main/proto' |
| srcDir 'third_party/protoc-gen-validate/src/main/proto' |
| srcDir 'third_party/udpa/src/main/proto' |
| srcDir 'third_party/googleapis/src/main/proto' |
| srcDir 'third_party/istio/src/main/proto' |
| } |
| } |
| } |
| |
| configureProtoCompilation() |
| |
| jar { |
| classifier = 'original' |
| } |
| |
| javadoc { |
| exclude 'io/grpc/xds/internal/**' |
| // At the moment there is no public API. Should probably clean up the class structure to reduce |
| // how much is exposed |
| exclude 'io/grpc/xds/**' |
| } |
| |
| shadowJar { |
| classifier = null |
| dependencies { |
| include(project(':grpc-xds')) |
| } |
| relocate 'com.google.api.expr', 'io.grpc.xds.shaded.com.google.api.expr' |
| relocate 'com.github.udpa', 'io.grpc.xds.shaded.com.github.udpa' |
| relocate 'io.envoyproxy', 'io.grpc.xds.shaded.io.envoyproxy' |
| relocate 'io.grpc.netty', 'io.grpc.netty.shaded.io.grpc.netty' |
| relocate 'io.netty', 'io.grpc.netty.shaded.io.netty' |
| relocate 'com.google.security', 'io.grpc.xds.shaded.com.google.security' |
| exclude "**/*.proto" |
| } |
| |
| jacocoTestReport { |
| classDirectories.from = sourceSets.main.output.collect { |
| fileTree(dir: it, |
| exclude: [ |
| '**/com/google/api/**', |
| '**/com/github/**', |
| '**/envoy/annotations/**', |
| '**/io/envoyproxy/**', |
| '**/udpa/annotations/**', |
| ]) |
| } |
| } |
| |
| publishing { |
| publications { |
| maven(MavenPublication) { |
| artifact shadowJar |
| artifacts.removeAll { it.classifier == 'original' } |
| |
| pom.withXml { |
| def dependenciesNode = new Node(null, 'dependencies') |
| project.configurations.shadow.allDependencies.each { dep -> |
| def dependencyNode = dependenciesNode.appendNode('dependency') |
| dependencyNode.appendNode('groupId', dep.group) |
| dependencyNode.appendNode('artifactId', dep.name) |
| def version = (dep.name == 'grpc-netty-shaded') ? '[' + dep.version + ']' : dep.version |
| dependencyNode.appendNode('version', version) |
| dependencyNode.appendNode('scope', 'compile') |
| } |
| asNode().dependencies[0].replaceNode(dependenciesNode) |
| } |
| } |
| } |
| } |