// Add dependency on the protobuf 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 }
}

description = "gRPC: Services"

dependencies {
    compile project(':grpc-protobuf'),
            project(':grpc-stub')
    compile (libraries.protobuf_util) {
        // prefer 20.0 from libraries instead of 19.0
        exclude group: 'com.google.guava', module: 'guava'
    }
    compile libraries.re2j

    compileOnly libraries.javax_annotation
    testCompile project(':grpc-testing'),
            libraries.netty_epoll // for DomainSocketAddress
    signature "org.codehaus.mojo.signature:java17:1.0@signature"
}

configureProtoCompilation()
