/* * Copyright 2016-2019 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: "com.github.johnrengelman.shadow" 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 (!isMultiplatform) { // 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 } } // empty xxx-javadoc.jar task javadocJar(type: Jar) { archiveClassifier = 'javadoc' } 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 (isBom) { // Configure mavenBom publication publications { mavenBom(MavenPublication) {} } } else if (!isMultiplatform) { // 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 modules if (type == 'maven' || type == 'metadata' || type == 'jvm' || type == 'js') { 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)