blob: 141235ab43047ce0807e1df3a55756df3a92938d [file] [log] [blame]
/*
* Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.build.api.dsl
/**
* Maven publishing DSL object for configuring options related to publishing Android variants to a
* Maven repository.
*
* Android Gradle Plugin 7.1.0 and higher allows you to configure which build variants to publish
* to an Apache Maven repository. Android Gradle Plugin creates components for those variants in
* your app or library module that you can use to customize a publication to a Maven repository.
* You are able to publish build variants in two different publishing mechanisms:
* single variant publishing and multiple variants publishing.
* In single variant publishing, Android Gradle Plugin creates a component for the variant you want
* to publish in your app or library module. The component has the same name as the variant and only
* contains that single variant. For modules that use the application plugin, Android Gradle Plugin
* publishes the variant as an Android App Bundle(AAB) by default. You can publish the variant as
* a ZIP of APK(s) instead by using [ApplicationSingleVariant.publishApk] inside the singleVariant
* config block. However, publishing the variant as AAB and APK together is not supported.
*
* Multiple variants publishing allows you to publish multiple variants in your library module and
* choose the name of the component those variants are added to. The component name is set to
* “default” unless you specify it in the multipleVariants function call. Android Gradle Plugin adds
* necessary variant specific attributes including buildType and flavorDimensions to disambiguate
* those variants. Note that multiple variants publishing is not supported in app modules.
*
* [LibraryPublishing] extends this with options for publishing library projects.
* [ApplicationPublishing] extends this with options for publishing application projects.
*/
interface Publishing<SingleVariantT: SingleVariant> {
/**
* Publish a variant with single variant publishing mechanism.
*/
fun singleVariant(variantName: String)
/**
* Publish a variant with single variant publishing options.
*/
fun singleVariant(variantName: String, action: SingleVariantT.() -> Unit)
}