Search code examples
androidmavenkotlinkotlin-multiplatform

How can I skip all target except Android for Multiplatform Kotlin library publication to maven?


I’m using maven-publish to publish my multiplatform library to maven repo. My publishing config looks like:

project.afterEvaluate {
    publishing {
        publications {
            create<MavenPublication>("maven") {
                groupId = projectGroup
                artifactId = projectArtifactName
                version = "${android.defaultConfig.versionName}"
                tasks.getByName("bundle${buildType.capitalize()}Aar").outputs.files.forEach {
                    artifact(it)
                }
            }
        }
        repositories {
            mavenLocal()
        }
    }
}

As a result of publishing i get several modules:

└── repository
    └── com
        └── example
            ├── lib-ios
            │   ├── 1.0.0
            ├── lib-iossim
            │   ├── 1.0.0
            ├── lib-macos
            │   ├── 1.0.0
            ├── lib-metadata
            │   ├── 1.0.0
            └── lib
                ├── 1.0.0

After that i use this library in Android app as:

dependencies {
    implementation("com.example:lib:1.0.0")
}

So it looks like i need to publish to maven only Android part of my library, since i use carthage to publish iOS part.

How can I skip all target except Android for Multiplatform Kotlin library publication to maven?


Solution

  • Check your grade > lib > publishing tasks. There should be:

    1. Publish[module_name]PublicationToMavenLocal and

    2. Publish[module_name]PublicationToMavenRepository

    This should publish only Android part of the library.