返回

AAR 包发布指南:Maven 插件与 Maven-Publish 插件的差异

Android

Android:发布 AAR 包到 Maven 仓库,Maven 插件和 Maven-Publish 插件的差异

在 Android 开发中,经常需要发布库以供其他项目使用。为了方便管理和分发,发布到 Maven 仓库是一个常见的做法。Gradle 提供了两种插件来实现这一目标:Maven 插件和 Maven-Publish 插件。

Maven 插件

Maven 插件是 Gradle 的默认插件,用于管理 Maven 仓库依赖项。它提供了将 AAR 包发布到 Maven 仓库的基本功能。

配置 Maven 插件:

apply plugin: 'maven'

group = 'com.example'
version = '1.0.0'

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "https://maven.google.com/upload") {
                authentication(userName: "user", password: "password")
            }
        }
    }
}

优点:

  • 简单易用,配置简单
  • 可用于将 AAR 包发布到本地或远程仓库
  • 支持基本元数据配置(如组、版本、)

缺点:

  • 缺少高级功能,如签名、自定义元数据和工件类型控制
  • 依赖于第三方库,可能存在兼容性问题

Maven-Publish 插件

Maven-Publish 插件是 Maven 插件的替代品,提供了更高级的功能和对 Maven Central 的原生支持。

配置 Maven-Publish 插件:

apply plugin: 'maven-publish'

group = 'com.example'
version = '1.0.0'

publishing {
    publications {
        maven(MavenPublication) {
            groupId = 'com.example'
            artifactId = 'my-library'
            version = '1.0.0'

            pom {
                name = 'My Library'
                description = 'A description of my library'
                url = 'https://github.com/example/my-library'
            }
        }
    }
    repositories {
        maven {
            url = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
            credentials {
                username = "sonatypeUsername"
                password = "sonatypePassword"
            }
        }
    }
}

优点:

  • 提供高级功能,如签名、自定义元数据和工件类型控制
  • 支持将 AAR 包直接发布到 Maven Central
  • 与 Maven 生态系统完全集成

缺点:

  • 配置比 Maven 插件复杂
  • 依赖于 Gradle 版本,可能存在兼容性问题

选择合适的方法

选择 Maven 插件或 Maven-Publish 插件取决于具体的项目需求。

  • 对于简单需求: Maven 插件就足够了,它易于配置并满足基本发布需求。
  • 对于高级需求: Maven-Publish 插件更合适,它提供了更高级的功能,如签名和 Maven Central 集成。

示例

假设您要发布名为 "my-library" 的 AAR 包。

使用 Maven 插件:

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "https://maven.google.com/upload") {
                authentication(userName: "user", password: "password")
            }
        }
    }
    archives = files("build/libs/my-library.aar")
}

使用 Maven-Publish 插件:

publishing {
    publications {
        maven(MavenPublication) {
            groupId = 'com.example'
            artifactId = 'my-library'
            version = '1.0.0'

            artifact file("build/libs/my-library.aar")
        }
    }
    repositories {
        maven {
            url = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
            credentials {
                username = "sonatypeUsername"
                password = "sonatypePassword"
            }
        }
    }
}

结论

发布 AAR 包到 Maven 仓库是 Android 开发中的常见任务。Maven 插件和 Maven-Publish 插件都提供了实现这一目标的方法,但具有不同的功能和优点。根据项目的具体需求,选择合适的插件对于确保高效和成功的发布至关重要。