| import org.gradle.util.VersionNumber |
| |
| /* |
| * 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 plugin: 'signing' |
| |
| // ------------- 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 { |
| def bintrayUpload = System.getenv("libs.bintray.upload") != null |
| if (bintrayUpload) { |
| PublishingKt.configureBintrayPublication(delegate, project) |
| } else { |
| PublishingKt.configureMavenPublication(delegate, project) |
| } |
| } |
| |
| 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 { |
| PublishingKt.configureMavenCentralMetadata(pom, project) |
| def bintrayUpload = System.getenv("libs.bintray.upload") != null |
| if (!bintrayUpload) { |
| PublishingKt.signPublicationIfKeyPresent(project, it) |
| } |
| // add empty javadocs |
| if (!isBom && it.name != "kotlinMultiplatform") { |
| it.artifact(javadocJar) |
| } |
| |
| def type = it.name |
| switch (type) { |
| case 'kotlinMultiplatform': |
| // With Kotlin 1.4 & HMPP, the root module should have no suffix in the ID, but for compatibility with |
| // the consumers who can't read Gradle module metadata, we publish the JVM artifacts in it, too |
| it.artifactId = project.name |
| apply from: "$rootDir/gradle/publish-mpp-root-module-in-platform.gradle" |
| publishPlatformArtifactsInRootModule(publications["jvm"]) |
| break |
| case 'metadata': |
| case 'jvm': |
| case 'js': |
| case 'native': |
| it.artifactId = "$project.name-$type" |
| break |
| } |
| } |
| } |
| |
| tasks.matching { it.name == "generatePomFileForKotlinMultiplatformPublication"}.configureEach { |
| dependsOn(tasks["generatePomFileForJvmPublication"]) |
| } |
| |
| // Compatibility with old TeamCity configurations that perform :kotlinx-coroutines-core:bintrayUpload |
| task bintrayUpload(dependsOn: publish) |