xref: /aosp_15_r20/external/kotlinx.atomicfu/gradle/publishing.gradle (revision 68017707106cb9da9fed635c150bc497c09c160f)
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