Newer
Older
simple-jdbc-stats / scripts / publish-mavencentral.gradle

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

task publishSourcesJar(type: Jar) {
    archiveClassifier.set('sources')

    // For pure Kotlin libraries, in case you have them
    from sourceSets.main.java.srcDirs
    //from sourceSets.main.kotlin.srcDirs
}

task packageJavadoc(type: Jar) {
    from javadoc
    classifier = 'javadoc'
}

artifacts {
    archives publishSourcesJar
}

File secretPropsFile = project.rootProject.file('local.properties')

ext["signing.keyId"] = ''
ext["signing.password"] = ''
ext["signing.secretKeyRingFile"] = ''
ext["ossrhUsername"] = ''
ext["ossrhPassword"] = ''
ext["sonatypeStagingProfileId"] = ''

if (secretPropsFile.exists()) {
    Properties p = new Properties()

    new FileInputStream(secretPropsFile).withCloseable { is ->
        p.load(is)
    }

    p.each { name, value ->
        ext[name] = value
    }
}

afterEvaluate {
    publishing {
        publications {
            relase(MavenPublication) {
                // The coordinates of the library, being set from variables that
                // we'll set up later
                groupId PUBLISH_GROUP_ID
                artifactId PUBLISH_ARTIFACT_ID
                version PUBLISH_VERSION

                // Two artifacts, the `aar` (or `jar`) and the sources
                if (project.plugins.findPlugin("com.android.library")) {
                    artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")
                } else {
                    artifact("$buildDir/libs/${project.getName()}-${version}.jar")
                }
                artifact publishSourcesJar
                artifact packageJavadoc

                // Mostly self-explanatory metadata
                pom {
                    name = PUBLISH_ARTIFACT_ID
                    description = 'Simple JDBC wrapper for query statistics'
                    url = 'https://github.com/rnentjes/Simple-jdbc-statistics'
                    licenses {
                        license {
                            name = 'MIT License'
                            url = 'https://github.com/rnentjes/Simple-jdbc-statistics/blob/master/LICENCE.txt'
                        }
                    }
                    developers {
                        developer {
                            id = 'rnentjes'
                            name = 'Rien Nentjes'
                            email = 'info@nentjes.com'
                        }
                        // Add all other devs here...
                    }
                    // Version control info - if you're using GitHub, follow the format as seen here
                    scm {
                        connection = 'scm:git:github.com/rnentjes/Simple-jdbc-statistics.git'
                        developerConnection = 'scm:git:ssh://github.com/rnentjes/Simple-jdbc-statistics.git'
                        url = 'https://github.com/rnentjes/Simple-jdbc-statistics.git/tree/main'
                    }
                    // A slightly hacky fix so that your POM will include any transitive dependencies
                    // that your library builds upon
                    /*
                    witXml {
                        def dependenciesNode = asNode().appendNode('dependencies')

                        project.configurations.implementation.allDependencies.each {
                            def dependencyNode = dependenciesNode.appendNode('dependency')
                            dependencyNode.appendNode('groupId', it.group)
                            dependencyNode.appendNode('artifactId', it.name)
                            dependencyNode.appendNode('version', it.version)
                        }
                    }*/
                }
            }
        }
        // The repository to publish to, Sonatype/MavenCentral
        repositories {
            maven {
                // This is an arbitrary name, you may also use "mavencentral" or
                // any other name that's descriptive for you
                name = "sonatype"
                url = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
                credentials {
                    username ossrhUsername
                    password ossrhPassword
                }
            }
        }
    }
}

signing {
    sign publishing.publications
}