import androidx.build.LibraryGroups
import androidx.build.LibraryVersions

plugins {
    id("SupportJavaLibraryPlugin")
}

jar {
    from sourceSets.main.output
    // Strip out typedef classes. For Android libraries, this is done
    // automatically by the Gradle plugin, but the Annotation library is a
    // plain jar, built by the regular Gradle java plugin. The typedefs
    // themselves have been manually extracted into the
    // external-annotations directory, and those are packaged separately
    // below by the annotationsZip task.
    exclude('androidx/annotation/ProductionVisibility.class')
    exclude('androidx/annotation/DimensionUnit.class')
    preserveFileTimestamps = false
    reproducibleFileOrder = true
}

// configuration for the javadoc to include all source sets.
javadoc {
    source    sourceSets.main.allJava
}

// Disable strict javadoc lint checks with javadoc v8 builds on Mac. http://b/26744780
if (JavaVersion.current().isJava8Compatible()) {
    tasks.withType(Javadoc) {
        if (options.doclet == null) {
            options.addBooleanOption('Xdoclint:none', true)
        }
    }
}

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

task annotationsZip(type: Zip) {
    classifier         'annotations'
    from               'external-annotations'
}

// add javadoc/source/annotations jar tasks as artifacts
artifacts {
    archives jar
    archives javadocJar
    archives annotationsZip
}

supportLibrary {
    name = "Android Support Library Annotations"
    publish = true
    mavenVersion = LibraryVersions.ANNOTATION
    mavenGroup = LibraryGroups.ANNOTATION
    inceptionYear = "2013"
    description = "The Support Library is a static library that you can add to your Android application in order to use APIs that are either not available for older platform versions or utility APIs that aren't a part of the framework APIs."
}