apply plugin: 'maven-publish' apply plugin: 'signing' task androidSourcesJar(type: Jar) { archiveClassifier.set('sources') if (project.plugins.findPlugin("com.android.library")) { // For Android libraries from android.sourceSets.main.java.srcDirs from android.sourceSets.main.kotlin.srcDirs } else { // For pure Kotlin libraries, in case you have them from sourceSets.main.java.srcDirs from sourceSets.main.kotlin.srcDirs } } artifacts { archives androidSourcesJar } 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') } nexusStaging { packageGroup = PUBLISH_GROUP_ID stagingProfileId = sonatypeStagingProfileId username = ossrhUsername password = ossrhPassword serverUrl = "https://s01.oss.sonatype.org/service/local/" } publishing { publications { release(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 androidSourcesJar // Mostly self-explanatory metadata pom { name = PUBLISH_ARTIFACT_ID description = 'Jetpack Compose RevealSwipe' url = 'https://github.com/ch4rl3x/RevealSwipe' licenses { license { name = 'Apache-2.0 License' url = 'https://www.apache.org/licenses/LICENSE-2.0.txt' } } developers { developer { id = 'ch4rl3x' name = 'Alexander Karkossa' email = 'alexander.karkossa@googlemail.com' } developer { id = 'kalinjul' name = 'Julian Kalinowski' email = 'j@kalinowski.email' } // 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/ch4rl3x/RevealSwipe.git' developerConnection = 'scm:git:ssh://github.com/ch4rl3x/RevealSwipe.git' url = 'https://github.com/ch4rl3x/RevealSwipe/tree/main' } // A slightly hacky fix so that your POM will include any transitive dependencies // that your library builds upon 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 } } } } signing { sign publishing.publications }