apply plugin: 'maven' // Java plugin has to have been already applied for the conf2scope mappings to work
apply plugin: 'signing'

project.status = 'release'

signing {
    required { gradle.taskGraph.hasTask(uploadMavenCentral) }
    sign configurations.archives
}

/**
 * Publishing to Maven Central example provided from http://jedicoder.blogspot.com/2011/11/automated-gradle-project-deployment-to.html
 * artifactory will execute uploadArchives to force generation of ivy.xml, and we don't want that to trigger an upload to maven
 * central, so using custom upload task.
 */
task uploadMavenCentral(type:Upload, dependsOn: signArchives) {
    configuration = configurations.archives
    onlyIf { ['release', 'snapshot'].contains(project.status) }
        repositories.mavenDeployer {
            beforeDeployment { signing.signPom(it) }

                // To test deployment locally, use the following instead of oss.sonatype.org
                //repository(url: "file://localhost/${rootProject.rootDir}/repo")

            def sonatypeUsername = rootProject.hasProperty('sonatypeUsername')?rootProject.sonatypeUsername:''
            def sonatypePassword = rootProject.hasProperty('sonatypePassword')?rootProject.sonatypePassword:''

                repository(url: 'https://oss.sonatype.org/service/local/staging/deploy/maven2') {
                    authentication(userName: sonatypeUsername, password: sonatypePassword)
                }

                snapshotRepository(url: 'https://oss.sonatype.org/content/repositories/snapshots/') {
                    authentication(userName: sonatypeUsername, password: sonatypePassword)
                }

                // Prevent datastamp from being appending to artifacts during deployment
                uniqueVersion = false

                // Closure to configure all the POM with extra info, common to all projects
                pom.project {
                    name "${project.name}"
                    description "${project.name} developed by Mikel Pascual"
                    developers {
                        developer {
                            id 'akaita'
                            name 'Mikel Pascual'
                            email 'mikel@akaita.com'
                        }
                    }
                    licenses {
                        license {
                            name 'The Apache Software License, Version 2.0'
                            url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                            distribution 'repo'
                        }
                    }
                    url "https://github.com/akaita/${rootProject.githubProjectName}"
                    scm {
                        connection "scm:git:git@github.com:akaita/${rootProject.githubProjectName}.git"
                        url "scm:git:git@github.com:akaita/${rootProject.githubProjectName}.git"
                        developerConnection "scm:git:git@github.com:akaita/${rootProject.githubProjectName}.git"
                    }
                    issueManagement {
                        system 'github'
                        url "https://github.com/akaita/${rootProject.githubProjectName}/issues"
                    }
                }
            }
        }
