plugins {
    id "java"
    id "maven-publish"

    id "com.google.protobuf"
    id "me.champeau.gradle.japicmp"
    id "ru.vyarus.animalsniffer"
}

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'),
            project(':grpc-stub'),
            libraries.guava,
            libraries.protobuf.java,
            libraries.protobuf.java.util
    runtimeOnly libraries.errorprone.annotations
    compileOnly libraries.javax.annotation
    testImplementation libraries.truth,
            project(':grpc-inprocess'),
            testFixtures(project(':grpc-core'))

    signature (libraries.signature.java) {
        artifact {
            extension = "signature"
        }
    }
}

configureProtoCompilation()

tasks.named("javadoc").configure {
    exclude 'io/grpc/grpclb/Internal*'
    exclude 'io/grpc/grpclb/*Provider.java'
}

tasks.named("jacocoTestReport").configure {
    classDirectories.from = sourceSets.main.output.collect {
        fileTree(dir: it,
        exclude: [
                '**/io/grpc/lb/v1/**',
        ])
    }
}
