Home | History | Annotate | Download | only in shaded
      1 buildscript {
      2     repositories { jcenter() }
      3     dependencies { classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.4' }
      4 }
      5 
      6 apply plugin: 'com.github.johnrengelman.shadow'
      7 
      8 description = "gRPC: Netty Shaded"
      9 
     10 sourceSets { testShadow {} }
     11 
     12 dependencies {
     13     compile project(':grpc-netty')
     14     runtime libraries.netty_tcnative
     15     testShadowCompile files(shadowJar),
     16             configurations.shadow,
     17             project(':grpc-testing-proto'),
     18             project(':grpc-testing'),
     19             libraries.truth
     20     shadow project(':grpc-core')
     21 }
     22 
     23 artifacts { // We want uploadArchives to handle the shadowJar; we don't care about
     24     // uploadShadow
     25     archives shadowJar }
     26 
     27 jar {
     28     // Must use a different classifier to avoid conflicting with shadowJar
     29     classifier = 'original'
     30 }
     31 configurations.archives.artifacts.removeAll { it.classifier == "original" }
     32 
     33 shadowJar {
     34     classifier = null
     35     dependencies {
     36         include(project(':grpc-netty'))
     37         include(dependency('io.netty:'))
     38     }
     39     relocate 'io.grpc.netty', 'io.grpc.netty.shaded.io.grpc.netty'
     40     relocate 'io.netty', 'io.grpc.netty.shaded.io.netty'
     41     // We have to be careful with these replacements as they must not match any
     42     // string in NativeLibraryLoader, else they cause corruption. Note that
     43     // this includes concatenation of string literals and constants.
     44     relocate 'META-INF/native/libnetty', 'META-INF/native/libio_grpc_netty_shaded_netty'
     45     relocate 'META-INF/native/netty', 'META-INF/native/io_grpc_netty_shaded_netty'
     46     mergeServiceFiles()
     47 }
     48 
     49 // This is a hack to have shadow plugin modify the uploadArchives POM's
     50 // dependencies. If we delete the uploadShadow task, then the plugin will no
     51 // longer modify the POM. This probably can break horribly with parallel build,
     52 // but that's broken anyway with install/uploadArchives
     53 uploadShadow.repositories.addAll(uploadArchives.repositories)
     54 // And then we use a further hack to share that POM with install
     55 install.repositories.mavenInstaller.pom = uploadArchives.repositories.mavenDeployer.pom
     56 
     57 task testShadow(type: Test) {
     58     testClassesDirs = sourceSets.testShadow.output.classesDirs
     59     classpath = sourceSets.testShadow.runtimeClasspath
     60 }
     61 compileTestShadowJava.options.compilerArgs = compileTestJava.options.compilerArgs
     62 compileTestShadowJava.options.encoding = compileTestJava.options.encoding
     63 
     64 test.dependsOn testShadow
     65