plugins {
    id "maven-publish"

    id "com.android.library"
    id "digital.wup.android-maven-publish"
}

description = 'gRPC: Android'

android {
    compileSdkVersion 28
    defaultConfig {
        consumerProguardFiles "proguard-rules.txt"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    lintOptions { abortOnError false }
}

repositories {
    google()
    jcenter()
}

dependencies {
    api project(':grpc-core')
    guavaDependency 'implementation'
    testImplementation project('::grpc-okhttp')
    testImplementation libraries.androidx_test
    testImplementation libraries.junit
    testImplementation (libraries.robolectric) {
        // Unreleased change: https://github.com/robolectric/robolectric/pull/5432
        exclude group: 'com.google.auto.service', module: 'auto-service'
    }
    testImplementation libraries.truth
}

task javadocs(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += files(android.getBootClasspath())
    classpath += files({
        android.libraryVariants.collect { variant ->
            variant.javaCompileProvider.get().classpath
        }
    })
    options {
        // Disable JavaDoc doclint on Java 8.
        if (JavaVersion.current().isJava8Compatible()) {
            addStringOption('Xdoclint:none', '-quiet')
        }
    }
}

task javadocJar(type: Jar, dependsOn: javadocs) {
    classifier = 'javadoc'
    from javadocs.destinationDir
}

task sourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.srcDirs
}

publishing {
    publications {
        maven {
            from components.android

            artifact javadocJar
            artifact sourcesJar
        }
    }
}
