plugins {
    id "java"
    id "maven-publish"
    id "com.google.protobuf"
    id "jacoco"
    id "ru.vyarus.animalsniffer"
}

description = "gRPC: RouteLookupService Loadbalancing plugin"

evaluationDependsOn(project(':grpc-core').path)

dependencies {
    implementation project(':grpc-core'),
            project(':grpc-protobuf'),
            project(':grpc-stub'),
            libraries.autovalue_annotation,
            libraries.guava
    annotationProcessor libraries.autovalue
    compileOnly libraries.javax_annotation
    testImplementation libraries.truth,
            project(':grpc-grpclb'),
            project(':grpc-testing'),
            project(':grpc-testing-proto'),
            project(':grpc-core').sourceSets.test.output  // for FakeClock
    signature "org.codehaus.mojo.signature:java17:1.0@signature"
}

[compileJava].each() {
    it.options.compilerArgs += [
            // only has AutoValue annotation processor
            "-Xlint:-processing",
    ]
    appendToProperty(
            it.options.errorprone.excludedPaths,
            ".*/build/generated/sources/annotationProcessor/java/.*",
            "|")
}

javadoc {
    // Do not publish javadoc since currently there is no public API.
    failOnError false  // no public or protected classes found to document
    exclude 'io/grpc/lookup/v1/**'
    exclude 'io/grpc/rls/internal/**'
    exclude 'io/grpc/rls/Internal*'
}

jacocoTestReport {
    classDirectories.from = sourceSets.main.output.collect {
        fileTree(dir: it, exclude: ['**/io/grpc/lookup/**'])
    }
}

configureProtoCompilation()
