task androidSourcesJar(type: Jar) { archiveClassifier.set("sources") from android.sourceSets.main.java.source } artifacts { archives androidSourcesJar } apply plugin: 'maven-publish' apply plugin: 'signing' group = PUBLISH_GROUP_ID version = PUBLISH_VERSION ext["signing.keyId"] = '' ext["signing.password"] = '' ext["signing.secretKeyRingFile"] = '' ext["ossrhUsername"] = '' ext["ossrhPassword"] = '' File secretPropsFile = project.rootProject.file('local.properties') if (secretPropsFile.exists()) { println "Found secret props file, loading props" Properties p = new Properties() p.load(new FileInputStream(secretPropsFile)) p.each { name, value -> ext[name] = value } } else { println "No props file, loading env vars" 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') } nexusStaging { packageGroup = PUBLISH_GROUP_ID stagingProfileId = '2097bad464f778' username = ossrhUsername password = ossrhPassword } publishing { publications { release(MavenPublication) { // The coordinates of the library, being set from variables that // we'll set up in a moment groupId PUBLISH_GROUP_ID artifactId PUBLISH_ARTIFACT_ID version PUBLISH_VERSION // Two artifacts, the `aar` and the sources artifact("$buildDir/outputs/aar/${project.getName()}-release.aar") artifact androidSourcesJar // Self-explanatory metadata for the most part pom { name = PUBLISH_ARTIFACT_ID description = 'Simple implementation to store object in tree structure.' // If your project has a dedicated site, use its URL here url = 'https://github.com/AdrianKuta/Tree-Data-Structure' licenses { license { name = 'MIT License' url = 'https://www.mit.edu/~amini/LICENSE.md' } } developers { developer { name = 'Adrian Kuta' email = 'adrian.kuta93@gmail.com' } } // Version control info, if you're using GitHub, follow the format as seen here scm { connection = 'scm:git:github.com/AdrianKuta/Tree-Data-Structure.git' developerConnection = 'scm:git:ssh://github.com/AdrianKuta/Tree-Data-Structure.git' url = 'https://github.com/AdrianKuta/Tree-Data-Structure/tree/master' } // 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 { // The repository to publish to, Sonatype/MavenCentral maven { // This is an arbitrary name, you may also use "mavencentral" or // any other name that's descriptive for you name = "sonatype" def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/" def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots/" // You only need this if you want to publish snapshots, otherwise just set the URL // to the release repo directly url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl // The username and password we've fetched earlier credentials { username ossrhUsername password ossrhPassword } } } } signing { sign publishing.publications }