| /* |
| * Copyright 2016-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. |
| */ |
| |
| // Configures publishing of Maven artifacts to Bintray |
| |
| apply plugin: 'maven' |
| apply plugin: 'maven-publish' |
| |
| apply from: project.rootProject.file('gradle/maven-central.gradle') |
| |
| // ------------- tasks |
| |
| def isMultiplatform = project.name == "kotlinx-coroutines-core" |
| def isBom = project.name == "kotlinx-coroutines-bom" |
| |
| if (!isBom) { |
| apply plugin: "com.github.johnrengelman.shadow" |
| |
| // empty xxx-javadoc.jar |
| task javadocJar(type: Jar) { |
| archiveClassifier = 'javadoc' |
| } |
| } |
| |
| if (!isMultiplatform && !isBom) { |
| // Regular java modules need 'java-library' plugin for proper publication |
| apply plugin: 'java-library' |
| |
| // MPP projects pack their sources automatically, java libraries need to explicitly pack them |
| task sourcesJar(type: Jar) { |
| archiveClassifier = 'sources' |
| from sourceSets.main.allSource |
| } |
| } |
| |
| publishing { |
| repositories { |
| maven { |
| def user = 'kotlin' |
| def repo = 'kotlinx' |
| def name = 'kotlinx.coroutines' |
| url = "https://api.bintray.com/maven/$user/$repo/$name/;publish=0" |
| |
| credentials { |
| username = project.hasProperty('bintrayUser') ? project.property('bintrayUser') : System.getenv('BINTRAY_USER') |
| password = project.hasProperty('bintrayApiKey') ? project.property('bintrayApiKey') : System.getenv('BINTRAY_API_KEY') |
| } |
| } |
| } |
| |
| if (!isMultiplatform && !isBom) { |
| // Configure java publications for regular non-MPP modules |
| publications { |
| maven(MavenPublication) { |
| if (project.name == "kotlinx-coroutines-debug") { |
| project.shadow.component(it) |
| } else { |
| from components.java |
| } |
| artifact sourcesJar |
| } |
| } |
| } |
| |
| publications.all { |
| pom.withXml(configureMavenCentralMetadata) |
| |
| // add empty javadocs (no need for MPP root publication which publishes only pom file) |
| if (it.name != 'kotlinMultiplatform' && !isBom) { |
| it.artifact(javadocJar) |
| } |
| |
| // Rename MPP artifacts for backward compatibility |
| def type = it.name |
| switch (type) { |
| case 'kotlinMultiplatform': |
| it.artifactId = "$project.name-native" |
| break |
| case 'metadata': |
| it.artifactId = "$project.name-common" |
| break |
| case 'jvm': |
| it.artifactId = "$project.name" |
| break |
| case 'js': |
| case 'native': |
| it.artifactId = "$project.name-$type" |
| break |
| } |
| |
| // disable metadata everywhere, but in native and js modules |
| if (type == 'maven' || type == 'metadata' || type == 'jvm') { |
| moduleDescriptorGenerator = null |
| } |
| } |
| } |
| |
| task publishDevelopSnapshot() { |
| def branch = System.getenv('currentBranch') |
| if (branch == "develop") { |
| dependsOn(":publish") |
| } |
| } |
| |
| // Compatibility with old TeamCity configurations that perform :kotlinx-coroutines-core:bintrayUpload |
| task bintrayUpload(dependsOn: publish) |