Usar o plug-in Maven Publish

O Plug-in do Android para Gradle 3.6.0 e versões mais recentes incluem compatibilidade com o plug-in Maven Publish para Gradle (link em inglês), que permite publicar artefatos de compilação em um repositório Apache Maven. O Plug-in do Android para Gradle cria um componente para cada artefato de variante de compilação no módulo do aplicativo ou da biblioteca usado para personalizar uma publicação para um repositório Maven (links em inglês).

Os componentes que o plug-in do Android cria dependem de o módulo usar o plug-in do aplicativo ou da biblioteca, conforme descrito na tabela abaixo.

Plug-in do Android Gradle Artefato de publicação Nome do componente
com.android.library AAR components.variant
com.android.application Um ZIP de APKs e arquivos de mapeamento ProGuard ou R8 disponíveis components.variant_apk
com.android.application Um Android App Bundle (AAB) components.variant_aab

A amostra de código a seguir cria uma publicação para as variantes de compilação de lançamento e depuração de uma biblioteca AAR. Cada publicação aplica o componente correspondente e personaliza os atributos do POM gerado, como as coordenadas do Maven.

Groovy


// Because the components are created only during the afterEvaluate phase, you must
// configure your publications using the afterEvaluate() lifecycle method.
afterEvaluate {
    publishing {
        publications {
            // Creates a Maven publication called "release".
            release(MavenPublication) {
                // Applies the component for the release build variant.
                from components.release

                // You can then customize attributes of the publication as shown below.
                groupId = 'com.example.MyLibrary'
                artifactId = 'final'
                version = '1.0'
            }
            // Creates a Maven publication called “debug”.
            debug(MavenPublication) {
                // Applies the component for the debug build variant.
                from components.debug

                groupId = 'com.example.MyLibrary'
                artifactId = 'final-debug'
                version = '1.0'
            }
        }
    }

Kotlin


// Because the components are created only during the afterEvaluate phase, you must
// configure your publications using the afterEvaluate() lifecycle method.
afterEvaluate {
    publishing {
        publications {
            // Creates a Maven publication called "release".
            release(MavenPublication) {
                // Applies the component for the release build variant.
                from components.release

                // You can then customize attributes of the publication as shown below.
                groupId = 'com.example.MyLibrary'
                artifactId = 'final'
                version = '1.0'
            }
            // Creates a Maven publication called “debug”.
            debug(MavenPublication) {
                // Applies the component for the debug build variant.
                from components.debug

                groupId = 'com.example.MyLibrary'
                artifactId = 'final-debug'
                version = '1.0'
            }
        }
    }

Para criar uma publicação que publique seu app como um arquivo ZIP de APKs ou um Android App Bundle (AAB), basta usar o componente adequado, conforme mostrado abaixo.

Groovy


afterEvaluate {
    publishing {
        publications {
            paidRelease(MavenPublication) {
              // The following applies a component to this publication
              // which results in publishing an app bundle.
              from components.paidRelease_aab

              groupId = 'com.example.MyApp'
              artifactId = 'paid-release-aab'
              version = '1.0'
            }
            paidDebug(MavenPublication) {
              // The following applies a component to this publication
              // which results in publishing APKs in a ZIP file.
              from components.paidDebug_apk

              groupId = 'com.example.MyApp'
              artifactId = 'paid-debug-apks'
              version = '1.0'
            }
        }
    }

Kotlin


afterEvaluate {
    publishing {
        publications {
            paidRelease(MavenPublication) {
              // The following applies a component to this publication
              // which results in publishing an app bundle.
              from components.paidRelease_aab

              groupId = 'com.example.MyApp'
              artifactId = 'paid-release-aab'
              version = '1.0'
            }
            paidDebug(MavenPublication) {
              // The following applies a component to this publication
              // which results in publishing APKs in a ZIP file.
              from components.paidDebug_apk

              groupId = 'com.example.MyApp'
              artifactId = 'paid-debug-apks'
              version = '1.0'
            }
        }
    }

Depois de criar publicações, o plug-in Maven Publish cria tarefas de publicação que podem ser usadas para publicar seu artefato nos repositórios que você especificar (links em inglês).