# LibraryPublishing

[View Source](https://cs.android.com/search?q=file:com/android/build/api/dsl/LibraryPublishing.kt+class:com.android.build.api.dsl.LibraryPublishing) Added in 7.1.0


```
interface LibraryPublishing : Publishing<LibrarySingleVariant>
```

<br />

*** ** * ** ***

Maven publishing DSL object for configuring options related to publishing AAR.

To publish just one variant, use `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/dsl/Publishing#singleVariant(kotlin.String)`. The following sets up publishing of only the fullRelease variant of an android library.

```
android {
    // This project has four build variants: fullDebug, fullRelease, demoDebug, demoRelease
    flavorDimensions 'mode'
    productFlavors {
        full {}
        demo {}
    }

    publishing {
        // Publishes "fullRelease" build variant with "fullRelease" component created by
        // Android Gradle plugin
        singleVariant("fullRelease")
    }
}

afterEvaluate {
    publishing {
        publications {
            fullRelease(MavenPublication) {
                from components.fullRelease
                // ......
            }
        }
    }
}
```

To publish multiple variants, use `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/dsl/LibraryPublishing#multipleVariants(kotlin.String,kotlin.Function1)`. The following sets up publishing of both fullDebug and fullRelease variants of an android library.

```
android {
    publishing {
        // Published fullDebug and fullRelease build variants with "full" component created by
        // Android Gradle Plugin. The buildType attribute is added to published build variants.
        // As only a single flavor from "mode" dimension is included, no flavor attribute is
        // included.
        multipleVariants("full") {
            includeBuildTypeValues("debug", "release")
            includeFlavorDimensionAndValues("mode", "full")
        }
    }
}

afterEvaluate {
    publishing {
        publications {
            full(MavenPublication) {
                from components.full
                // ......
            }
        }
    }
}
```

To publish all the build variants, you can use `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/dsl/MultipleVariants#allVariants()` as a shortcut instead of filtering variants with `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/dsl/MultipleVariants#includeBuildTypeValues(kotlin.Array)` and `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/dsl/MultipleVariants#includeFlavorDimensionAndValues(kotlin.String,kotlin.Array)`.

```
android {
    publishing {
        // Publishes all build variants with "default" component
        multipleVariants {
            allVariants()
        }
    }
}

afterEvaluate {
    publishing {
        publications {
            allVariants(MavenPublication) {
                from components.default
                // ......
            }
        }
    }
}
```

This following code example shows how to create two publications one for demoRelease build variant, one for fullDebug \& fullRelease build variants.

```
android {
    publishing {
        // Publish "demoRelease" build variant with "demoRelease" component
        singleVariant("demoRelease")

        // Publish "fullDebug" and "fullRelease" build variants with "full" component
        multipleVariants("full") {
            includeBuildTypeValues("debug", "release")
            includeFlavorDimensionAndValues("mode", "full")
        }
    }
}

afterEvaluate {
    publishing {
        publications {
            // Creates two publications with different artifactIds
            full(MavenPublication) {
                from components.full
                groupId = 'com.example.MyLibrary'
                artifactId = 'final-full'
                version = '1.0'
            }
            demoRelease(MavenPublication) {
                from components.demoRelease
                groupId = 'com.example.MyLibrary'
                artifactId = 'final-demo'
                version = '1.0'
            }
        }
    }
}
```

The testFixtures component is published by default with its main variant. To disable publishing the testFixtures component, see the following example.

```
afterEvaluate {
    // Disable publishing test fixtures of release variant
    components.release.withVariantsFromConfiguration(
        configurations.releaseTestFixturesVariantReleaseApiPublication) { skip() }
    components.release.withVariantsFromConfiguration(
        configurations.releaseTestFixturesVariantReleaseRuntimePublication) { skip() }
}
```

## Summary

| ### Public functions |
|---|---|
| `https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/dsl/LibraryPublishing#multipleVariants(kotlin.Function1)(action: https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/dsl/MultipleVariants.() -> https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)` Publish multiple variants to the default component. |
| `https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/dsl/LibraryPublishing#multipleVariants(kotlin.String,kotlin.Function1)(componentName: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html, action: https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/dsl/MultipleVariants.() -> https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)` Publish multiple variants to a component. |

### Inherited functions

From [com.android.build.api.dsl.Publishing](https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/dsl/Publishing) `https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/dsl/Publishing#singleVariant(kotlin.String)(variantName: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`

Publish a variant with single variant publishing mechanism.
`https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/dsl/Publishing#singleVariant(kotlin.String,kotlin.Function1)(variantName: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html, action: https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/dsl/LibrarySingleVariant.() -> https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`

Publish a variant with single variant publishing options.

## Public functions

### multipleVariants

Added in 7.1.0

```
fun multipleVariants(action: MultipleVariants.() -> Unit): Unit
```

Publish multiple variants to the default component.

### multipleVariants

Added in 7.1.0

```
fun multipleVariants(componentName: String, action: MultipleVariants.() -> Unit): Unit
```

Publish multiple variants to a component.