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

apply plugin: 'com.google.protobuf'

description = 'gRPC: Protobuf Lite'

dependencies {
    compile project(':grpc-api'),
            libraries.protobuf_lite
    compile (libraries.guava) {
        // prefer 2.3.3 from libraries instead of 2.1.3
        exclude group: 'com.google.errorprone', module: 'error_prone_annotations'
        // prefer 3.0.2 from libraries instead of 3.0.1
        exclude group: 'com.google.code.findbugs', module: 'jsr305'
        // prefer 1.17 from libraries instead of 1.14
        exclude group: 'org.codehaus.mojo', module: 'animal-sniffer-annotations'
    }

    testCompile project(':grpc-core')
    testProtobuf libraries.protobuf

    signature "org.codehaus.mojo.signature:java17:1.0@signature"
    signature "net.sf.androidscents.signature:android-api-level-14:4.0_r4@signature"
}

compileTestJava {
    // Protobuf-generated Lite produces quite a few warnings.
    options.compilerArgs += [
        "-Xlint:-rawtypes",
        "-Xlint:-unchecked",
        "-Xlint:-fallthrough"
    ]
    options.errorprone.excludedPaths = ".*/build/generated/source/proto/.*"
}

protobuf {
    protoc {
        if (project.hasProperty('protoc')) {
            path = project.protoc
        } else {
            artifact = "com.google.protobuf:protoc:${protocVersion}"
        }
    }
    plugins {
        javalite {
            if (project.hasProperty('protoc-gen-javalite')) {
                path = project['protoc-gen-javalite']
            } else {
                artifact = libraries.protoc_lite
            }
        }
    }
    generateProtoTasks {
        ofSourceSet('test')*.each { task ->
            task.builtins { remove java }
            task.plugins { javalite {} }
        }
    }
}
