gradle-mvn-push.gradle 4.4 KB
/*
 * Copyright 2013 Chris Banes
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/*
 * This file is from:
 * https://github.com/chrisbanes/gradle-mvn-push/blob/master/gradle-mvn-push.gradle
 */

apply plugin: 'maven-publish'
apply plugin: 'signing'

version = VERSION_NAME
group = GROUP

def isReleaseBuild() {
    return VERSION_NAME.contains("SNAPSHOT") == false
}

def getReleaseRepositoryUrl() {
    return hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL
            : "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
}

def getSnapshotRepositoryUrl() {
    return hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL
            : "https://oss.sonatype.org/content/repositories/snapshots/"
}

def getRepositoryUsername() {
    return hasProperty('nexusUsername') ? nexusUsername : ""
}

def getRepositoryPassword() {
    return hasProperty('nexusPassword') ? nexusPassword : ""
}

def configurePom(pom) {
    pom.name = POM_NAME
    pom.packaging = POM_PACKAGING
    pom.description = POM_DESCRIPTION
    pom.url = POM_URL

    pom.scm {
        url = POM_SCM_URL
        connection = POM_SCM_CONNECTION
        developerConnection = POM_SCM_DEV_CONNECTION
    }

    pom.licenses {
        license {
            name = POM_LICENCE_NAME
            url = POM_LICENCE_URL
            distribution = POM_LICENCE_DIST
        }
    }

    pom.developers {
        developer {
            id = POM_DEVELOPER_ID
            name = POM_DEVELOPER_NAME
        }
    }
}

afterEvaluate { project ->
    publishing {
        repositories {
            maven {
                def releasesRepoUrl = getReleaseRepositoryUrl()
                def snapshotsRepoUrl = getSnapshotRepositoryUrl()
                url = isReleaseBuild() ? releasesRepoUrl : snapshotsRepoUrl

                credentials(PasswordCredentials) {
                    username = getRepositoryUsername()
                    password = getRepositoryPassword()
                }
            }
        }
    }

    if (project.getPlugins().hasPlugin('com.android.application') ||
            project.getPlugins().hasPlugin('com.android.library')) {

        task androidJavadocs(type: Javadoc) {
            source = android.sourceSets.main.java.source
            classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
            excludes = ['**/*.kt']
        }

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

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

    if (JavaVersion.current().isJava8Compatible()) {
        allprojects {
            tasks.withType(Javadoc) {
                options.addStringOption('Xdoclint:none', '-quiet')
            }
        }
    }

    if (JavaVersion.current().isJava9Compatible()) {
        allprojects {
            tasks.withType(Javadoc) {
                options.addBooleanOption('html5', true)
            }
        }
    }

    artifacts {
        if (project.getPlugins().hasPlugin('com.android.application') ||
                project.getPlugins().hasPlugin('com.android.library')) {
            archives androidSourcesJar
            archives androidJavadocsJar
        }
    }

    android.libraryVariants.all { variant ->
        tasks.androidJavadocs.doFirst {
            classpath += files(variant.javaCompileProvider.get().classpath.files.join(File.pathSeparator))
        }
    }

    publishing.publications.all { publication ->
        publication.groupId = GROUP
        publication.version = VERSION_NAME

        publication.artifact androidSourcesJar
        publication.artifact androidJavadocsJar

        configurePom(publication.pom)
    }

    signing {
        publishing.publications.all { publication ->
            sign publication
        }
    }
}