123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- if (versions == null || versions.publish_version == null) {
- throw new IllegalStateException("Unable to reference publish_version!")
- } else if (module_group == null || module_name == null) {
- throw new IllegalStateException("Must provide module_group and module_name!")
- }
- 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 = module_group
- version = versions.publish_version
- // Default values
- 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()
- new FileInputStream(secretPropsFile).withCloseable { is -> p.load(is) }
- 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) {
- // The coordinates of the library, being set from variables that
- // we'll set up later
- groupId module_group
- artifactId module_name
- version versions.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 {
- packaging 'aar'
- name = module_name
- description = '😍 A beautiful, fluid, and extensible dialogs API for Kotlin & Android.'
- url = 'https://github.com/afollestad/material-dialogs'
- licenses {
- license {
- name = 'Apache 2.0 License'
- url = 'https://github.com/afollestad/material-dialogs/blob/main/LICENSE.md'
- }
- }
- developers {
- developer {
- id = 'afollestad'
- name = 'Aidan Follestad'
- email = 'dont-email-me@af.codes'
- }
- // 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/afollestad/material-dialogs.git'
- developerConnection = 'scm:git:ssh://github.com/afollestad/material-dialogs.git'
- url = 'https://github.com/afollestad/material-dialogs/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)
- }
- }
- }
- }
- }
- // 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://oss.sonatype.org/service/local/staging/deploy/maven2/"
- credentials {
- username ossrhUsername
- password ossrhPassword
- }
- }
- }
- }
- signing {
- sign publishing.publications
- }
- afterEvaluate {
- publishReleasePublicationToSonatypeRepository.dependsOn assembleRelease
- }
|