Android打包AAR发布到自己搭建的远程Maven仓库

Android打包AAR发布到自己搭建的远程Maven仓库

准备

  如果你想把一些公用的软件包在多个项目之间共享,或者共享给广大开发者,你想让他们使用的时候如下面一样方便:

    implementation 'com.squareup.retrofit2:retrofit:2.5.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0'
    implementation 'com.squareup.okhttp3:logging-interceptor:3.11.0'
    implementation 'com.squareup.retrofit2:converter-moshi:2.4.0'
    implementation "com.squareup.moshi:moshi-kotlin:1.7.0"

正如你所视,倘若你开发的库也是如此方便的被一行代码就可以引入,那么你有以下几种方案:

  1. 在本地建立Maven仓库,详见教程 Android打包AAR发布到本地Maven仓库
  2. 使用各大平台的Maven仓库,比如github就可以做到,这样做的话就只能把库公开
  3. 使用Nexus搭建Maven私人仓库,即可以公开,也可以私有化(Nexus搭建

  在这里演示第三种方式,而且已经搭好了Maven仓库了,这次是演示如何使用的,其实大部分都跟 Android打包AAR发布到本地Maven仓库 一致,建议先去看一眼这篇文章,因为我现在是在这个基础上新增的内容。

步骤

我们在 Android打包AAR发布到本地Maven仓库 的基础上,只需要做三处修改即可:

  • 注释掉本地Maven仓库配置部分代码,新增远程Maven仓库配置,如下:
    //配置本地maven仓库
    //uploadArchives {
    //    repositories {
    //        mavenDeployer {
    //            //本地Maven库的路径,这个路径可以随意安排放在哪里,在要使用的时候,也必须要跟这个一毛一样。
    //            repository(url: "file://" + project.ANDROID_SDK_PATH)
    //            //包名
    //            pom.groupId = 'com.hicyh.mylibrary'
    //            //项目名
    //            pom.artifactId = 'hilib'
    //            //版本号
    //            pom.version = '0.0.7'
    //            //使用的时候就可以:compile '包名:项目名:版本号'
    //        }
    //    }
    //}
    
    //配置远程仓库
    uploadArchives {
        repositories {
            mavenDeployer {
                pom.groupId = "com.hicyh.mylibrary"
                pom.artifactId = "hilib"
                pom.version = "1.1.0"
                //仓库地址,一般搭建Maven仓库的时候已经自动生成,也可以在后台管理里面新增一个仓库
                repository(url: "http://maven.hicyh.com/nexus/content/repositories/releases/") {
                //登录Nexus的用户名和密码
                authentication(userName: "***", password: "***")
                }
            }
        }
    }
    

如果看过发布到本地的教程,那很容易知道上面的修改是在哪个位置,在这里不赘述。

  • 项目根目录的build.gradle文件中配置maven的地址时:

    
    
    allprojects {
        repositories {
            //本地Maven仓库地址,必须要和提交的时候一毛一样才行
            //maven{url 'file:///Users/huan/workspace/android/sdk/extras/android/m2repository'}
            //远程仓库地址
            maven{url 'http://maven.hicyh.com/nexus/content/repositories/releases/'}
            google()
            jcenter()
        }
    }
    

    如上示例,也就是注释了本地的地址,新增了远程的地址即可。

  • 使用的时候跟本地仓库一毛一样,如下:

    //远程仓库依赖
    implementation 'com.hicyh.mylibrary:hilib:1.1.0'
    

到此就发布完成了,可以到后台看看发布的库是否已经存在:
截屏2020-10-13 下午3.29.48
可以看到,我们刚才发布的库已经存在后台中了

完结

  如果看过发布到本地,其实就很正常能推断出发布到远程的基本就是这样简单的,然后就可以在别的电脑,或者把链接发给别人,让别人也能用到你的库啦,让别人也能用到你的库,最重要的两个步骤是:一、项目的build.gradle文件中配置maven的地址、二、引入依赖implementation 'com.hicyh.mylibrary:hilib:1.1.0'。就这么简单,你get到了吗!!
【demo地址】