Maven Publish 플러그인 사용

Android Gradle 플러그인 3.6.0 이상에서는 빌드 아티팩트를 Apache Maven 저장소에 게시할 수 있는 Maven Publish Gradle 플러그인 지원 기능이 포함되어 있습니다. Android Gradle 플러그인에서는 Maven 저장소에 대한 게시를 맞춤설정하는 데 사용하는 앱 또는 라이브러리 모듈의 빌드 변형 아티팩트별 구성요소가 생성됩니다.

아래 표에 설명된 것처럼 Android 플러그인에서 생성되는 구성요소는 모듈에서 애플리케이션 또는 라이브러리 플러그인이 사용되는지에 따라 달라집니다.

Android Gradle 플러그인 게시물 아티팩트 구성요소 이름
com.android.library AAR components.variant
com.android.application APK의 ZIP 및 사용 가능한 ProGuard 또는 R8 매핑 파일 components.variant_apk
com.android.application AAB(Android App Bundle) components.variant_aab

다음 코드 샘플은 AAR 라이브러리의 출시 및 디버그 빌드 변형에 관한 게시를 생성합니다. 각 게시에는 일치하는 구성요소가 적용되고 Maven 좌표와 같이 생성된 POM의 속성을 맞춤설정합니다.

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'
            }
        }
    }

앱을 APK ZIP 파일 또는 AAB(Android App Bundle)로 게시하려면 다음과 같이 적절한 구성요소를 사용하세요.

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'
            }
        }
    }

게시를 생성하면 Maven Publish 플러그인은 지정된 저장소에 아티팩트를 게시하는 데 사용할 수 있는 게시 작업을 생성합니다.