android不同版本的gradle发布内容到Maven仓库

1,622 阅读1分钟

前言

通常,一些基础功能组件、业务组件会被多个项目组使用。因此,我们有必要将其发布到私有的maven库,方便不同的项目组进行引用。

由于gradle的不断升级,每个版本对于发布到maven私有库的方式有所不同。接下来主要将Gradle7.0作为边界进行分别说明。

具体使用

Gradle6.x及以下版本的使用

apply plugin: 'maven'
 
uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: url//私有maven库地址) {
                authentication(userName//账号, password// 密码)
            }
            pom.version = version // 版本信息
            pom.artifactId = artifactId // 项目信息
            pom.groupId = groupId
            pom.name = name
            pom.packaging = packaging // 打包类型,例如:aar
        }
    }
}

配置完成后即可在Gradle Tasks视图中看到uploadArchives task,点击即会自动打包并上传到配置的maven仓库

uploadArchives.png

对于repository的url配置有几种:

  • 配置到当前路径的某个文件夹:repository(url: uri('../repository'))
  • 配置到具体的路径:repository(url: uri('file://E:/repository'))
  • 配置到服务器:repository(url: http://...)

Gradle7.0及以上版本的使用

apply plugin: 'maven-publish'

afterEvaluate {
    publishing {
        repositories {
            // 本地仓库
            maven {
                name('modulelive')
                url uri("../repo")
            }
            // 远程仓库
            maven {
                allowInsecureProtocol(true)
                name('modulelive')
                url = url//私有maven库地址
                credentials {
                    username// 账号
                    password// 密码
                }
            }
        }
        publications {
            debugType(MavenPublication) {
                from components.debug
                groupId "com.example.live"
                artifactId "modulelive"
                version "1.0.0"
            }
            releaseType(MavenPublication) {
                from components.release
                groupId "com.example.live"
                artifactId "modulelive"
                version "1.0.0"
            }
        }
    }
}

可以看到,maven-publish插件可以为应用或库模块中的每个构建变体进行独立发布。

publishing.png