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()
