1*68017707SAndroid Build Coastguard Worker/* 2*68017707SAndroid Build Coastguard Worker * Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. 3*68017707SAndroid Build Coastguard Worker */ 4*68017707SAndroid Build Coastguard Worker 5*68017707SAndroid Build Coastguard Worker// Configures publishing of Maven artifacts to Bintray 6*68017707SAndroid Build Coastguard Worker 7*68017707SAndroid Build Coastguard Workerapply plugin: 'maven-publish' 8*68017707SAndroid Build Coastguard Workerapply plugin: 'signing' 9*68017707SAndroid Build Coastguard Worker 10*68017707SAndroid Build Coastguard Worker// todo: figure out how we can check it in a generic way 11*68017707SAndroid Build Coastguard Workerdef isMultiplatform = project.name == 'atomicfu' 12*68017707SAndroid Build Coastguard Worker 13*68017707SAndroid Build Coastguard Workerif (!isMultiplatform) { 14*68017707SAndroid Build Coastguard Worker // Regular java modules need 'java-library' plugin for proper publication 15*68017707SAndroid Build Coastguard Worker apply plugin: 'java-library' 16*68017707SAndroid Build Coastguard Worker 17*68017707SAndroid Build Coastguard Worker // MPP projects pack their sources automtically, java libraries need to explicitly pack them 18*68017707SAndroid Build Coastguard Worker task sourcesJar(type: Jar) { 19*68017707SAndroid Build Coastguard Worker archiveClassifier = 'sources' 20*68017707SAndroid Build Coastguard Worker from "src/main/kotlin" 21*68017707SAndroid Build Coastguard Worker } 22*68017707SAndroid Build Coastguard Worker} 23*68017707SAndroid Build Coastguard Worker 24*68017707SAndroid Build Coastguard Worker// empty xxx-javadoc.jar 25*68017707SAndroid Build Coastguard Workertask javadocJar(type: Jar) { 26*68017707SAndroid Build Coastguard Worker archiveClassifier = 'javadoc' 27*68017707SAndroid Build Coastguard Worker} 28*68017707SAndroid Build Coastguard Worker 29*68017707SAndroid Build Coastguard Workerpublishing { 30*68017707SAndroid Build Coastguard Worker repositories { // this: closure 31*68017707SAndroid Build Coastguard Worker PublishingKt.configureMavenPublication(delegate, project) 32*68017707SAndroid Build Coastguard Worker } 33*68017707SAndroid Build Coastguard Worker 34*68017707SAndroid Build Coastguard Worker if (!isMultiplatform) { 35*68017707SAndroid Build Coastguard Worker // Configure java publications for non-MPP projects 36*68017707SAndroid Build Coastguard Worker publications { 37*68017707SAndroid Build Coastguard Worker // plugin configures its own publication pluginMaven 38*68017707SAndroid Build Coastguard Worker if (project.name == 'atomicfu-gradle-plugin') { 39*68017707SAndroid Build Coastguard Worker pluginMaven(MavenPublication) { 40*68017707SAndroid Build Coastguard Worker artifact sourcesJar 41*68017707SAndroid Build Coastguard Worker } 42*68017707SAndroid Build Coastguard Worker } else { 43*68017707SAndroid Build Coastguard Worker maven(MavenPublication) { 44*68017707SAndroid Build Coastguard Worker from components.java 45*68017707SAndroid Build Coastguard Worker artifact sourcesJar 46*68017707SAndroid Build Coastguard Worker 47*68017707SAndroid Build Coastguard Worker if (project.name.endsWith("-maven-plugin")) { 48*68017707SAndroid Build Coastguard Worker pom.packaging = 'maven-plugin' 49*68017707SAndroid Build Coastguard Worker } 50*68017707SAndroid Build Coastguard Worker } 51*68017707SAndroid Build Coastguard Worker } 52*68017707SAndroid Build Coastguard Worker } 53*68017707SAndroid Build Coastguard Worker } 54*68017707SAndroid Build Coastguard Worker 55*68017707SAndroid Build Coastguard Worker publications.all { 56*68017707SAndroid Build Coastguard Worker PublishingKt.configureMavenCentralMetadata(pom, project) 57*68017707SAndroid Build Coastguard Worker PublishingKt.signPublicationIfKeyPresent(project, it) 58*68017707SAndroid Build Coastguard Worker // add empty javadocs 59*68017707SAndroid Build Coastguard Worker if (it.name != "kotlinMultiplatform") { // The root module gets the JVM's javadoc JAR 60*68017707SAndroid Build Coastguard Worker it.artifact(javadocJar) 61*68017707SAndroid Build Coastguard Worker } 62*68017707SAndroid Build Coastguard Worker } 63*68017707SAndroid Build Coastguard Worker 64*68017707SAndroid Build Coastguard Worker tasks.withType(AbstractPublishToMaven).configureEach { 65*68017707SAndroid Build Coastguard Worker dependsOn(tasks.withType(Sign)) 66*68017707SAndroid Build Coastguard Worker } 67*68017707SAndroid Build Coastguard Worker 68*68017707SAndroid Build Coastguard Worker // NOTE: This is a temporary WA, see KT-61313. 69*68017707SAndroid Build Coastguard Worker tasks.withType(Sign).configureEach { signTask -> 70*68017707SAndroid Build Coastguard Worker def pubName = name.takeBetween("sign", "Publication") 71*68017707SAndroid Build Coastguard Worker 72*68017707SAndroid Build Coastguard Worker // Task ':linkDebugTest<platform>' uses this output of task ':sign<platform>Publication' without declaring an explicit or implicit dependency 73*68017707SAndroid Build Coastguard Worker tasks.findByName("linkDebugTest$pubName")?.configure { 74*68017707SAndroid Build Coastguard Worker mustRunAfter(signTask) 75*68017707SAndroid Build Coastguard Worker } 76*68017707SAndroid Build Coastguard Worker // Task ':compileTestKotlin<platform>' uses this output of task ':sign<platform>Publication' without declaring an explicit or implicit dependency 77*68017707SAndroid Build Coastguard Worker tasks.findByName("compileTestKotlin$pubName")?.configure { 78*68017707SAndroid Build Coastguard Worker mustRunAfter(signTask) 79*68017707SAndroid Build Coastguard Worker } 80*68017707SAndroid Build Coastguard Worker } 81*68017707SAndroid Build Coastguard Worker} 82