| /* |
| * 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) |
| } |