Roman Elizarov | 1f74a2d | 2018-06-29 19:19:45 +0300 | [diff] [blame] | 1 | /* |
Vsevolod Tolstopyatov | 41a2e30 | 2021-02-04 07:16:48 -0800 | [diff] [blame] | 2 | * Copyright 2016-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. |
Roman Elizarov | 1f74a2d | 2018-06-29 19:19:45 +0300 | [diff] [blame] | 3 | */ |
| 4 | |
Vsevolod Tolstopyatov | 41a2e30 | 2021-02-04 07:16:48 -0800 | [diff] [blame] | 5 | import org.gradle.util.VersionNumber |
| 6 | |
Vsevolod Tolstopyatov | 347feed | 2021-04-22 12:58:39 +0300 | [diff] [blame] | 7 | // Configures publishing of Maven artifacts to Maven Central |
Roman Elizarov | 65eff0b | 2017-12-20 15:51:31 +0300 | [diff] [blame] | 8 | |
| 9 | apply plugin: 'maven' |
| 10 | apply plugin: 'maven-publish' |
Vsevolod Tolstopyatov | c990568 | 2020-12-31 06:01:07 -0800 | [diff] [blame] | 11 | apply plugin: 'signing' |
Roman Elizarov | 65eff0b | 2017-12-20 15:51:31 +0300 | [diff] [blame] | 12 | |
Roman Elizarov | 79e02bb | 2017-12-26 13:08:15 +0300 | [diff] [blame] | 13 | // ------------- tasks |
| 14 | |
Vsevolod Tolstopyatov | fe4e05c | 2019-07-19 12:28:15 +0300 | [diff] [blame] | 15 | def isMultiplatform = project.name == "kotlinx-coroutines-core" |
| 16 | def isBom = project.name == "kotlinx-coroutines-bom" |
Vsevolod Tolstopyatov | 4ddfc91 | 2018-07-12 18:36:02 +0300 | [diff] [blame] | 17 | |
Sergey Shatunov | c5a42da | 2019-09-22 19:50:35 +0700 | [diff] [blame] | 18 | if (!isBom) { |
| 19 | apply plugin: "com.github.johnrengelman.shadow" |
| 20 | |
| 21 | // empty xxx-javadoc.jar |
| 22 | task javadocJar(type: Jar) { |
| 23 | archiveClassifier = 'javadoc' |
| 24 | } |
| 25 | } |
| 26 | |
| 27 | if (!isMultiplatform && !isBom) { |
Roman Elizarov | d2f4b2b | 2019-09-02 17:22:39 +0300 | [diff] [blame] | 28 | // Regular java modules need 'java-library' plugin for proper publication |
| 29 | apply plugin: 'java-library' |
Vsevolod Tolstopyatov | e50a0fa | 2019-01-28 11:34:24 +0300 | [diff] [blame] | 30 | |
Roman Elizarov | d2f4b2b | 2019-09-02 17:22:39 +0300 | [diff] [blame] | 31 | // MPP projects pack their sources automatically, java libraries need to explicitly pack them |
| 32 | task sourcesJar(type: Jar) { |
| 33 | archiveClassifier = 'sources' |
Vsevolod Tolstopyatov | 4ddfc91 | 2018-07-12 18:36:02 +0300 | [diff] [blame] | 34 | from sourceSets.main.allSource |
| 35 | } |
Roman Elizarov | 65eff0b | 2017-12-20 15:51:31 +0300 | [diff] [blame] | 36 | } |
| 37 | |
| 38 | publishing { |
Vsevolod Tolstopyatov | 4ddfc91 | 2018-07-12 18:36:02 +0300 | [diff] [blame] | 39 | repositories { |
Vsevolod Tolstopyatov | 347feed | 2021-04-22 12:58:39 +0300 | [diff] [blame] | 40 | PublishingKt.configureMavenPublication(delegate, project) |
Vsevolod Tolstopyatov | 4ddfc91 | 2018-07-12 18:36:02 +0300 | [diff] [blame] | 41 | } |
| 42 | |
Sergey Shatunov | c5a42da | 2019-09-22 19:50:35 +0700 | [diff] [blame] | 43 | if (!isMultiplatform && !isBom) { |
Roman Elizarov | d2f4b2b | 2019-09-02 17:22:39 +0300 | [diff] [blame] | 44 | // Configure java publications for regular non-MPP modules |
Vsevolod Tolstopyatov | e50a0fa | 2019-01-28 11:34:24 +0300 | [diff] [blame] | 45 | publications { |
Roman Elizarov | d2f4b2b | 2019-09-02 17:22:39 +0300 | [diff] [blame] | 46 | maven(MavenPublication) { |
Vsevolod Tolstopyatov | 2f50363 | 2019-07-19 14:16:14 +0300 | [diff] [blame] | 47 | if (project.name == "kotlinx-coroutines-debug") { |
Roman Elizarov | d2f4b2b | 2019-09-02 17:22:39 +0300 | [diff] [blame] | 48 | project.shadow.component(it) |
Vsevolod Tolstopyatov | 2f50363 | 2019-07-19 14:16:14 +0300 | [diff] [blame] | 49 | } else { |
Roman Elizarov | d2f4b2b | 2019-09-02 17:22:39 +0300 | [diff] [blame] | 50 | from components.java |
Vsevolod Tolstopyatov | 2f50363 | 2019-07-19 14:16:14 +0300 | [diff] [blame] | 51 | } |
Roman Elizarov | d2f4b2b | 2019-09-02 17:22:39 +0300 | [diff] [blame] | 52 | artifact sourcesJar |
Vsevolod Tolstopyatov | e50a0fa | 2019-01-28 11:34:24 +0300 | [diff] [blame] | 53 | } |
| 54 | } |
Vsevolod Tolstopyatov | e50a0fa | 2019-01-28 11:34:24 +0300 | [diff] [blame] | 55 | } |
| 56 | |
Vsevolod Tolstopyatov | e50a0fa | 2019-01-28 11:34:24 +0300 | [diff] [blame] | 57 | publications.all { |
Vsevolod Tolstopyatov | c990568 | 2020-12-31 06:01:07 -0800 | [diff] [blame] | 58 | PublishingKt.configureMavenCentralMetadata(pom, project) |
Vsevolod Tolstopyatov | 347feed | 2021-04-22 12:58:39 +0300 | [diff] [blame] | 59 | PublishingKt.signPublicationIfKeyPresent(project, it) |
Sergey Igushkin | 17248c8 | 2020-05-22 12:28:25 +0300 | [diff] [blame] | 60 | // add empty javadocs |
| 61 | if (!isBom && it.name != "kotlinMultiplatform") { |
Roman Elizarov | d2f4b2b | 2019-09-02 17:22:39 +0300 | [diff] [blame] | 62 | it.artifact(javadocJar) |
| 63 | } |
| 64 | |
Vsevolod Tolstopyatov | e50a0fa | 2019-01-28 11:34:24 +0300 | [diff] [blame] | 65 | def type = it.name |
| 66 | switch (type) { |
| 67 | case 'kotlinMultiplatform': |
Sergey Igushkin | 17248c8 | 2020-05-22 12:28:25 +0300 | [diff] [blame] | 68 | // With Kotlin 1.4 & HMPP, the root module should have no suffix in the ID, but for compatibility with |
| 69 | // the consumers who can't read Gradle module metadata, we publish the JVM artifacts in it, too |
Vsevolod Tolstopyatov | 520afcb | 2020-12-18 05:56:22 -0800 | [diff] [blame] | 70 | it.artifactId = project.name |
| 71 | apply from: "$rootDir/gradle/publish-mpp-root-module-in-platform.gradle" |
| 72 | publishPlatformArtifactsInRootModule(publications["jvm"]) |
Vsevolod Tolstopyatov | e50a0fa | 2019-01-28 11:34:24 +0300 | [diff] [blame] | 73 | break |
Vsevolod Tolstopyatov | e50a0fa | 2019-01-28 11:34:24 +0300 | [diff] [blame] | 74 | case 'metadata': |
Vsevolod Tolstopyatov | e50a0fa | 2019-01-28 11:34:24 +0300 | [diff] [blame] | 75 | case 'jvm': |
Vsevolod Tolstopyatov | e50a0fa | 2019-01-28 11:34:24 +0300 | [diff] [blame] | 76 | case 'js': |
| 77 | case 'native': |
| 78 | it.artifactId = "$project.name-$type" |
| 79 | break |
| 80 | } |
Vsevolod Tolstopyatov | 3179683 | 2018-11-12 14:49:41 +0300 | [diff] [blame] | 81 | } |
| 82 | } |
| 83 | |
Sergey Igushkin | 17248c8 | 2020-05-22 12:28:25 +0300 | [diff] [blame] | 84 | tasks.matching { it.name == "generatePomFileForKotlinMultiplatformPublication"}.configureEach { |
| 85 | dependsOn(tasks["generatePomFileForJvmPublication"]) |
| 86 | } |
| 87 | |
Roman Elizarov | d2f4b2b | 2019-09-02 17:22:39 +0300 | [diff] [blame] | 88 | // Compatibility with old TeamCity configurations that perform :kotlinx-coroutines-core:bintrayUpload |
Sergey Shatunov | c5a42da | 2019-09-22 19:50:35 +0700 | [diff] [blame] | 89 | task bintrayUpload(dependsOn: publish) |