1*e07d83d3SAndroid Build Coastguard Workerplugins { 2*e07d83d3SAndroid Build Coastguard Worker id "java-library" 3*e07d83d3SAndroid Build Coastguard Worker id "maven-publish" 4*e07d83d3SAndroid Build Coastguard Worker 5*e07d83d3SAndroid Build Coastguard Worker id "com.github.johnrengelman.shadow" 6*e07d83d3SAndroid Build Coastguard Worker id "com.google.protobuf" 7*e07d83d3SAndroid Build Coastguard Worker id "ru.vyarus.animalsniffer" 8*e07d83d3SAndroid Build Coastguard Worker} 9*e07d83d3SAndroid Build Coastguard Worker 10*e07d83d3SAndroid Build Coastguard Workerdescription = "gRPC: ALTS" 11*e07d83d3SAndroid Build Coastguard Worker 12*e07d83d3SAndroid Build Coastguard Workerdependencies { 13*e07d83d3SAndroid Build Coastguard Worker api project(':grpc-core') 14*e07d83d3SAndroid Build Coastguard Worker implementation project(':grpc-auth'), 15*e07d83d3SAndroid Build Coastguard Worker project(':grpc-grpclb'), 16*e07d83d3SAndroid Build Coastguard Worker project(':grpc-protobuf'), 17*e07d83d3SAndroid Build Coastguard Worker project(':grpc-stub'), 18*e07d83d3SAndroid Build Coastguard Worker libraries.protobuf.java, 19*e07d83d3SAndroid Build Coastguard Worker libraries.conscrypt, 20*e07d83d3SAndroid Build Coastguard Worker libraries.guava.jre, // JRE required by protobuf-java-util from grpclb 21*e07d83d3SAndroid Build Coastguard Worker libraries.google.auth.oauth2Http 22*e07d83d3SAndroid Build Coastguard Worker def nettyDependency = implementation project(':grpc-netty') 23*e07d83d3SAndroid Build Coastguard Worker compileOnly libraries.javax.annotation 24*e07d83d3SAndroid Build Coastguard Worker 25*e07d83d3SAndroid Build Coastguard Worker shadow configurations.implementation.getDependencies().minus(nettyDependency) 26*e07d83d3SAndroid Build Coastguard Worker shadow project(path: ':grpc-netty-shaded', configuration: 'shadow') 27*e07d83d3SAndroid Build Coastguard Worker 28*e07d83d3SAndroid Build Coastguard Worker testImplementation project(':grpc-testing'), 29*e07d83d3SAndroid Build Coastguard Worker testFixtures(project(':grpc-core')), 30*e07d83d3SAndroid Build Coastguard Worker project(':grpc-testing-proto'), 31*e07d83d3SAndroid Build Coastguard Worker libraries.guava, 32*e07d83d3SAndroid Build Coastguard Worker libraries.junit, 33*e07d83d3SAndroid Build Coastguard Worker libraries.mockito.core, 34*e07d83d3SAndroid Build Coastguard Worker libraries.truth 35*e07d83d3SAndroid Build Coastguard Worker 36*e07d83d3SAndroid Build Coastguard Worker testImplementation (libraries.guava.testlib) { 37*e07d83d3SAndroid Build Coastguard Worker exclude group: 'junit', module: 'junit' 38*e07d83d3SAndroid Build Coastguard Worker } 39*e07d83d3SAndroid Build Coastguard Worker testRuntimeOnly libraries.netty.tcnative, 40*e07d83d3SAndroid Build Coastguard Worker libraries.netty.tcnative.classes 41*e07d83d3SAndroid Build Coastguard Worker testRuntimeOnly (libraries.netty.transport.epoll) { 42*e07d83d3SAndroid Build Coastguard Worker artifact { 43*e07d83d3SAndroid Build Coastguard Worker classifier = "linux-x86_64" 44*e07d83d3SAndroid Build Coastguard Worker } 45*e07d83d3SAndroid Build Coastguard Worker } 46*e07d83d3SAndroid Build Coastguard Worker signature libraries.signature.java 47*e07d83d3SAndroid Build Coastguard Worker} 48*e07d83d3SAndroid Build Coastguard Worker 49*e07d83d3SAndroid Build Coastguard WorkerconfigureProtoCompilation() 50*e07d83d3SAndroid Build Coastguard Worker 51*e07d83d3SAndroid Build Coastguard Workerimport net.ltgt.gradle.errorprone.CheckSeverity 52*e07d83d3SAndroid Build Coastguard Worker 53*e07d83d3SAndroid Build Coastguard Worker[tasks.named("compileJava"), tasks.named("compileTestJava")]*.configure { 54*e07d83d3SAndroid Build Coastguard Worker // protobuf calls valueof. Will be fixed in next release (google/protobuf#4046) 55*e07d83d3SAndroid Build Coastguard Worker options.compilerArgs += [ 56*e07d83d3SAndroid Build Coastguard Worker "-Xlint:-deprecation" 57*e07d83d3SAndroid Build Coastguard Worker ] 58*e07d83d3SAndroid Build Coastguard Worker // ALTS returns a lot of futures that we mostly don't care about. 59*e07d83d3SAndroid Build Coastguard Worker options.errorprone.check("FutureReturnValueIgnored", CheckSeverity.OFF) 60*e07d83d3SAndroid Build Coastguard Worker} 61*e07d83d3SAndroid Build Coastguard Worker 62*e07d83d3SAndroid Build Coastguard Workertasks.named("javadoc").configure { 63*e07d83d3SAndroid Build Coastguard Worker exclude 'io/grpc/alts/internal/**' 64*e07d83d3SAndroid Build Coastguard Worker exclude 'io/grpc/alts/Internal*' 65*e07d83d3SAndroid Build Coastguard Worker} 66*e07d83d3SAndroid Build Coastguard Worker 67*e07d83d3SAndroid Build Coastguard Workertasks.named("jar").configure { 68*e07d83d3SAndroid Build Coastguard Worker // Must use a different archiveClassifier to avoid conflicting with shadowJar 69*e07d83d3SAndroid Build Coastguard Worker archiveClassifier = 'original' 70*e07d83d3SAndroid Build Coastguard Worker} 71*e07d83d3SAndroid Build Coastguard Worker 72*e07d83d3SAndroid Build Coastguard Worker// We want to use grpc-netty-shaded instead of grpc-netty. But we also want our 73*e07d83d3SAndroid Build Coastguard Worker// source to work with Bazel, so we rewrite the code as part of the build. 74*e07d83d3SAndroid Build Coastguard Workertasks.named("shadowJar").configure { 75*e07d83d3SAndroid Build Coastguard Worker archiveClassifier = null 76*e07d83d3SAndroid Build Coastguard Worker dependencies { 77*e07d83d3SAndroid Build Coastguard Worker exclude(dependency {true}) 78*e07d83d3SAndroid Build Coastguard Worker } 79*e07d83d3SAndroid Build Coastguard Worker relocate 'io.grpc.netty', 'io.grpc.netty.shaded.io.grpc.netty' 80*e07d83d3SAndroid Build Coastguard Worker relocate 'io.netty', 'io.grpc.netty.shaded.io.netty' 81*e07d83d3SAndroid Build Coastguard Worker} 82*e07d83d3SAndroid Build Coastguard Worker 83*e07d83d3SAndroid Build Coastguard Workerpublishing { 84*e07d83d3SAndroid Build Coastguard Worker publications { 85*e07d83d3SAndroid Build Coastguard Worker maven(MavenPublication) { 86*e07d83d3SAndroid Build Coastguard Worker // We want this to throw an exception if it isn't working 87*e07d83d3SAndroid Build Coastguard Worker def originalJar = artifacts.find { dep -> dep.classifier == 'original'} 88*e07d83d3SAndroid Build Coastguard Worker artifacts.remove(originalJar) 89*e07d83d3SAndroid Build Coastguard Worker 90*e07d83d3SAndroid Build Coastguard Worker pom.withXml { 91*e07d83d3SAndroid Build Coastguard Worker def dependenciesNode = new Node(null, 'dependencies') 92*e07d83d3SAndroid Build Coastguard Worker project.configurations.shadow.allDependencies.each { dep -> 93*e07d83d3SAndroid Build Coastguard Worker def dependencyNode = dependenciesNode.appendNode('dependency') 94*e07d83d3SAndroid Build Coastguard Worker dependencyNode.appendNode('groupId', dep.group) 95*e07d83d3SAndroid Build Coastguard Worker dependencyNode.appendNode('artifactId', dep.name) 96*e07d83d3SAndroid Build Coastguard Worker dependencyNode.appendNode('version', dep.version) 97*e07d83d3SAndroid Build Coastguard Worker dependencyNode.appendNode('scope', 'compile') 98*e07d83d3SAndroid Build Coastguard Worker } 99*e07d83d3SAndroid Build Coastguard Worker asNode().dependencies[0].replaceNode(dependenciesNode) 100*e07d83d3SAndroid Build Coastguard Worker } 101*e07d83d3SAndroid Build Coastguard Worker } 102*e07d83d3SAndroid Build Coastguard Worker } 103*e07d83d3SAndroid Build Coastguard Worker} 104