description = "gRPC: GRPCLB LoadBalancer plugin"

buildscript {
    repositories {
        maven { // The google mirror is less flaky than mavenCentral()
            url "https://maven-central.storage-download.googleapis.com/repos/central/data/" }
    }
    dependencies { classpath libraries.protobuf_plugin }
}

dependencies {
    compile project(':grpc-core'),
            project(':grpc-protobuf'),
            project(':grpc-stub'),
            libraries.protobuf
    compile (libraries.protobuf_util) {
        // prefer 20.0 from libraries instead of 19.0
        exclude group: 'com.google.guava', module: 'guava'
    }
    compileOnly libraries.javax_annotation
    testCompile libraries.truth,
            project(':grpc-core').sourceSets.test.output
}

configureProtoCompilation()
