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.SUPPORT_LIBRARY
    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."
}