# LibraryPublishing

# LibraryPublishing

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

|----------------------------------------------------------------------------------------------------------------------------------------------------------|
| [com.android.build.api.dsl.LibraryPublishing](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/dsl/LibraryPublishing#) |

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

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

```gdscript
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[multipleVariants](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/dsl/LibraryPublishing#multipleVariants(kotlin.String,%20kotlin.Function1)). The following sets up publishing of both fullDebug and fullRelease variants of an android library.  

```gdscript
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[MultipleVariants.allVariants](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/dsl/MultipleVariants#allVariants())as a shortcut instead of filtering variants with[MultipleVariants.includeBuildTypeValues](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/dsl/MultipleVariants#includeBuildTypeValues(kotlin.String))and[MultipleVariants.includeFlavorDimensionAndValues](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/dsl/MultipleVariants#includeFlavorDimensionAndValues(kotlin.String,%20kotlin.String)).  

```gdscript
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 \&amp; fullRelease build variants.  

```gdscript
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.  

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

## Summary

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

| ### Inherited functions ||
|---|---|
| From class[Publishing](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/dsl/Publishing) |------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [singleVariant](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/dsl/Publishing#singleVariant(kotlin.String))`(`variantName:` `[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`)` <br /> Publish a variant with single variant publishing mechanism. <br />                                                                                                                                      | | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [singleVariant](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/dsl/Publishing#singleVariant(kotlin.String,%20kotlin.Function1))`(`variantName:` `[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, `action:` `SingleVariantT.()` `->` `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`)` <br /> Publish a variant with single variant publishing options. <br /> | ||

## Public methods

### multipleVariants

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

Publish multiple variants to a component.  

### multipleVariants

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

Publish multiple variants to the default component.