Skip to content

Instantly share code, notes, and snippets.

@robints
Created June 29, 2016 03:15
Show Gist options
  • Select an option

  • Save robints/06d08cb8142e72111bab90239000b62c to your computer and use it in GitHub Desktop.

Select an option

Save robints/06d08cb8142e72111bab90239000b62c to your computer and use it in GitHub Desktop.

Revisions

  1. robints created this gist Jun 29, 2016.
    218 changes: 218 additions & 0 deletions maven-push.gradle
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,218 @@
    /*
    * 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.
    */

    apply plugin: 'maven'
    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 :
    "http://nexus.yaomaitong.net/content/groups/public"
    }

    def getSnapshotRepositoryUrl() {
    return hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL :
    "http://nexus.yaomaitong.net/content/repositories/snapshots/"
    }

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

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

    afterEvaluate { project ->
    uploadArchives {
    repositories {
    mavenDeployer {
    beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }

    pom.groupId = GROUP
    pom.artifactId = POM_ARTIFACT_ID
    pom.version = VERSION_NAME

    repository(url: getReleaseRepositoryUrl()) {
    authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
    }
    snapshotRepository(url: getSnapshotRepositoryUrl()) {
    authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
    }

    pom.project {
    name POM_NAME
    packaging POM_PACKAGING
    description POM_DESCRIPTION
    url POM_URL

    scm {
    url POM_SCM_URL
    connection POM_SCM_CONNECTION
    developerConnection POM_SCM_DEV_CONNECTION
    }

    licenses {
    license {
    name POM_LICENCE_NAME
    url POM_LICENCE_URL
    distribution POM_LICENCE_DIST
    }
    }

    developers {
    developer {
    id POM_DEVELOPER_ID
    name POM_DEVELOPER_NAME
    }
    }
    }
    }
    }
    }

    signing {
    required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
    sign configurations.archives
    }

    if (project.getPlugins().hasPlugin('com.android.application') ||
    project.getPlugins().hasPlugin('com.android.library')) {
    task install(type: Upload, dependsOn: assemble) {
    repositories.mavenInstaller {
    configuration = configurations.archives

    pom.groupId = GROUP
    pom.artifactId = POM_ARTIFACT_ID
    pom.version = VERSION_NAME

    pom.project {
    name POM_NAME
    packaging POM_PACKAGING
    description POM_DESCRIPTION
    url POM_URL

    scm {
    url POM_SCM_URL
    connection POM_SCM_CONNECTION
    developerConnection POM_SCM_DEV_CONNECTION
    }

    licenses {
    license {
    name POM_LICENCE_NAME
    url POM_LICENCE_URL
    distribution POM_LICENCE_DIST
    }
    }

    developers {
    developer {
    id POM_DEVELOPER_ID
    name POM_DEVELOPER_NAME
    }
    }
    }
    }
    }

    task androidJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java.source
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    }

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

    task androidSourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.source
    }
    } else {
    install {
    repositories.mavenInstaller {
    pom.groupId = GROUP
    pom.artifactId = POM_ARTIFACT_ID
    pom.version = VERSION_NAME

    pom.project {
    name POM_NAME
    packaging POM_PACKAGING
    description POM_DESCRIPTION
    url POM_URL

    scm {
    url POM_SCM_URL
    connection POM_SCM_CONNECTION
    developerConnection POM_SCM_DEV_CONNECTION
    }

    licenses {
    license {
    name POM_LICENCE_NAME
    url POM_LICENCE_URL
    distribution POM_LICENCE_DIST
    }
    }

    developers {
    developer {
    id POM_DEVELOPER_ID
    name POM_DEVELOPER_NAME
    }
    }
    }
    }
    }

    task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
    }

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

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

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