Search code examples
gradle-kotlin-dslkotlin-multiplatform

Kotlin multiplatform: Skipping publish of some platforms using Gradle Kotlin dsl


I have Kotlin multiplatform project. And I would like to publish part artifacts to repository, skipping another part. I am using following config:

kotlin {
    jvm()
    val iosArm64 = iosArm64()
    val iosX64 = iosX64()

    configure(listOf(iosArm64, iosX64)) {
        binaries {
            framework("some") {
                embedBitcode("disable")
            }
        }
    }
    ...
}

publishing {
    repositories {
        maven {
            ...
        }
    }

    publications {
        register("mavenJava", MavenPublication::class) {
            ...
        }
    }
}

I would like to skip iosX64 for example, as I do a "Fat framework" and I wan to publish it. How to configure Gradle Kotlin dsl to avoid publication?


Solution

  • This could be achived using task configuration of maven-publish:

    tasks.withType<PublishToMavenRepository>().configureEach {
        onlyIf {
            (publication.artifactId == "my-artifact-1") || (publication.artifactId == "my-artifact-2")
        }
    }