apply plugin: 'maven-publish' apply plugin: 'signing' apply plugin: 'org.jetbrains.dokka' task androidSourcesJar(type: Jar) { archiveClassifier.set('sources') if (project.plugins.findPlugin("com.android.library")) { from android.sourceSets.main.java.srcDirs from android.sourceSets.main.kotlin.srcDirs } else { from sourceSets.main.java.srcDirs from sourceSets.main.kotlin.srcDirs } } tasks.withType(dokkaHtmlPartial.getClass()).configureEach { pluginsMapConfiguration.set( ["org.jetbrains.dokka.base.DokkaBase": """{ "separateInheritedMembers": true}"""] ) } task javadocJar(type: Jar, dependsOn: dokkaJavadoc) { archiveClassifier.set('javadoc') from dokkaJavadoc.outputDirectory } artifacts { archives androidSourcesJar archives javadocJar } group = PUBLISH_GROUP_ID version = PUBLISH_VERSION ext["signing.keyId"] = '' ext["signing.password"] = '' ext["signing.secretKeyRingFile"] = '' ext["ossrhUsername"] = '' ext["ossrhPassword"] = '' ext["sonatypeStagingProfileId"] = '' File secretPropsFile = project.rootProject.file('local.properties') if (secretPropsFile.exists()) { Properties p = new Properties() p.load(new FileInputStream(secretPropsFile)) p.each { name, value -> ext[name] = value } } else { ext["signing.keyId"] = System.getenv('SIGNING_KEY_ID') ext["signing.password"] = System.getenv('SIGNING_PASSWORD') ext["signing.secretKeyRingFile"] = System.getenv('SIGNING_SECRET_KEY_RING_FILE') ext["ossrhUsername"] = System.getenv('OSSRH_USERNAME') ext["ossrhPassword"] = System.getenv('OSSRH_PASSWORD') ext["sonatypeStagingProfileId"] = System.getenv('SONATYPE_STAGING_PROFILE_ID') } publishing { publications { release(MavenPublication) { groupId PUBLISH_GROUP_ID artifactId PUBLISH_ARTIFACT_ID version PUBLISH_VERSION if (project.plugins.findPlugin("com.android.library")) { artifact("$buildDir/outputs/aar/${project.getName()}-release.aar") } else { artifact("$buildDir/libs/${project.getName()}-${version}.jar") } artifact androidSourcesJar artifact javadocJar pom { name = PUBLISH_ARTIFACT_ID description = 'An android image compressor library' url = 'https://github.com/zetbaitsu/Compressor' licenses { license { name = 'The Apache Software License, Version 2.0' url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' } } developers { developer { id = 'zetbaitsu' name = 'Zetra' email = 'zetbaitsu@gmail.com' } } scm { connection = 'scm:git:github.com/zetbaitsu/Compressor.git' developerConnection = 'scm:git:ssh://github.com/zetbaitsu/Compressor.git' url = 'https://github.com/zetbaitsu/Compressor/tree/main' } withXml { 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) } } } } } repositories { maven { name = "sonatype" def releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots/" url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl credentials { username ossrhUsername password ossrhPassword } } } } nexusStaging { packageGroup = PUBLISH_GROUP_ID stagingProfileId = sonatypeStagingProfileId username = ossrhUsername password = ossrhPassword } signing { sign publishing.publications }