背景:

在大型项目中,一个项目被划分成很多模块,如何快速的将一些module提供给他人使用,已成为项目中集成必不可少的一部分。常见的就是依赖

在Android中,dependencies{}的模块是管理依赖加载的,常见的有


implementation 'androidx.multidex:multidex:2.0.0'
implementation('androidx.appcompat:appcompat:1.0.0') { force = true }
implementation('androidx.legacy:legacy-support-v4:1.0.0') { force = true }
implementation('com.google.code.gson:gson:2.8.0')


这些是我们比较常见的一些依赖库,如何将自己的项目也变成aar提供给他人呢?

常见的有两种:

第一种:使用githunb,将自己的代码上传到github,利用github平台,将自己的代码库制作成依赖库

第二种:我们自己搭建maven库(今天所要讲的重点)

1.maven私服建议大家首选:Nexus私服。关于Nexus私服搭建,大家自己可以做一个,这里不再过多讲解,如果有问题,可以新增一期私服搭建

2.Android项目 maven集成

1.新建一个可以上传的gradle工具

在项目下新建:push_maven.gradle

配置如下内容

//引用maven插件


apply plugin: 'maven'

uploadArchives { //新增 ,因为Android Studio gradle 支持maven插件,所以可以添加此task
    configuration = configurations.archives
    repositories {
        mavenDeployer {
            // 指定maven仓库url
            repository(url: RELEASE_URL) {
                // nexus登录默认用户名和密码
                authentication(userName: USER_NAME, password: PASSWORD)
            }
            pom.project {
                groupId GROUP_ID
                artifactId ARTIFACT_ID
                version VERSION
                packaging PACKAGING //
                //description '' //更新描述
            }
        }
    }
}


2.配置账号和库地址

//maven仓库的地址和密码


RELEASE_URL=//正式库地址 SNAPSHOT_URL=//快照地址 USER_NAME=//账号 PASSWORD=//密码


 //包的信息


GROUP_ID=//组id 例如:com.abc.com ARTIFACT_ID=//模块id 或者叫库名 VERSION=//版本号 PACKAGING=aar //类型,现在基本已都是以aar


如:

我们有一个私服,

地址如下:http://maven.aliyun.com/nexus/content/groups/public/
 

正式库:RELEASE_URL="http://maven.aliyun.com/nexus/content/groups/public/releases"

快照库:SNAPSHOT_URL="http://maven.aliyun.com/nexus/content/groups/public/snapshots"

USER_NAME=woniu123

PASSWORD=123456

GROUP_ID="com.woniu.mobile.action"

ARTIFACT_ID=woniu_video

VERSION="1.0.0.1"

PACKAGING=aar

一般这些信息会存放在当前module模块下的gradle.properties,如果没有该文件,可以新建一个

使用:如果打包上传成功,我们如何依赖我们这个库?


implementation('com.woniu.mobile.action:woniu_video:1.0.0.1')


依赖内容是三个参数:(GROUP_ID:ARTIFACT_ID:VERSION)

这还不算完,你这时候会发现依赖找不到,因为你的项目不支持该私服

新增私服maven地址:工程的build文件下,否则implementation找不到maven地址


repositories {
    maven {
        url 'http://maven.aliyun.com/nexus/content/groups/public/'
    }

}


打包与上传:

介绍了如何配置和使用,接下来是该如何把项目打成aar,上传到私服地址

0.引用push_maven.gradle上传工具到module 的build中


apply from: 'push_maven.gradle'


引入之后,在gradle 的Tasks下的update中,会多一个工具按钮uploadArchives,这就是我们上面新增的push上传的工具名称

1.打包:

Android 如何将自己的工程变成依赖库,打包上传maven库_maven

 我们是通过gradle的来打包,找到gradle下的自己项目module,找到module的Tasks,打开build,

点击build自动执行,执行完,log会提示success

Android 如何将自己的工程变成依赖库,打包上传maven库_maven_02

2.上传

Android 如何将自己的工程变成依赖库,打包上传maven库_android studio_03

把编译好的aar,通过tasks下的update下的uploadArchvies, 工具上传,uploadArchives 是我们在push_maven.gradle中定义的。

这样上传完就算完成了。

注意:每次上传都需要修改版本号,Release不支持覆盖,否则会报错。snapshots快照是支持版本多传,如果你当前不改变版本号,上传以后,maven库会有会以当前版本号为前缀,后面拼接当前系统时间和随机数加自增长。