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).