【前言】
对于大多数人来说,要把一个Android项目作为依赖库提供给另一个Android项目使用时,都是先编译成aar或者jar,然后复制到另一个项目中,这样子比较繁琐,而且若是作为依赖库的Android项目,还依赖了第三方项目的,打包成aar或者jar之后,另一个项目依然还是需要自己手动添加aar所依赖的第三方项目库。那么,是否有更好的解决办法呢?当然就是把你的Android项目发布的maven仓库中,因为没有搭建自己的线上maven仓库,这里就只演示发布到本地仓库的步骤
一、发布到本地仓库
1、在作为依赖库的build.gradle中,编写发布到本地仓库脚本
def localRepoURL = 'file://' + new File(System.getProperty('user.home'), '.m2/repository').absolutePath
apply plugin: 'maven' //指定使用 maven
uploadArchives {
print(localRepoURL)
repositories {
mavenDeployer {
pom.groupId = "com.sswl.plugindev" //包名
pom.artifactId = "dev" //SDK 功能,自定义一个即可
pom.version = "v1.0.37" //版本号
pom.packaging = 'aar' //定义打包
repository(url: localRepoURL) //传入本地仓库地址
}
}
}
//设置每次build完成之后执行uploadArchives任务
build.finalizedBy(uploadArchives)
或者写成这样也可以
def localRepoURL = 'file://' + new File(System.getProperty('user.home'), '.m2/repository').absolutePath
apply plugin: 'maven' //指定使用 maven
uploadArchives {
print(localRepoURL)
repositories {
mavenDeployer {
pom.project {
name = project.name
print("名字:"+project.name)
packaging = 'aar'
description = '我是插件'
groupId = "com.sswl.plugindev"
artifactId = "dev"
version = "v1.0.38"
}
repository(url: localRepoURL) //传入本地仓库地址
}
}
}
//设置每次build完成之后执行uploadArchives任务
build.finalizedBy(uploadArchives)
1)自定义变量localRepourl
赋值为本地仓库地址,一般Android Studio的本地仓库都是放在用户主目录下的.m2/repository目录下的,我们可以打开瞅一瞅
2)uploadArchives
、repositories
、mavenDeployer
这些都是内置好的task,不能随便自定义,按要求写就好
3)各项配置说明
pom.groupId
:定义 这个库的包名,个随便自定义即可
pom.artifactId
:SDK 功能,自定义一个即可
pom.version
:该库的版本号,也是自定义一个字符串版本号即可
pom.packaging
:打包成aar,其实这个不声明也无所谓,感觉没啥用,写成jar还是最终打成aar
repository(url: localRepoURL)
:传入发布到的本地仓库地址
2、配置完成之后 ,就可以运行该任务了,点击一下左侧的运行按钮就会发布本地仓库中
3、我们打开用户主目录下本地仓库,比如我的:C:\Users\Administrator\.m2\repository\com\sswl\plugindev\dev
,可以到发布的各个版本
4、打开刚刚发布的v1.0.38目录,可以看到打包好的aar
5、打开dev-v1.0.38.pom文件,可以看到这个依赖库所依赖到的第三方库,到时被其他项目引入之后也会自动下载引入进去
二、引用本地仓库的依赖库
1、在项目目录下的build.gradle:allprojects
-repositories
中 ,添加mavenLocal()
即可
allprojects {
repositories {
google()
jcenter()
mavenLocal()
}
}
【备注】假如刚才发布的仓库地址不是默认的本地仓库,那就需要类似这样声明
allprojects {
repositories {
google()
jcenter()
maven { url '你的本地地址' }
}
}
2、然后,在你对应模块的build.gradle中,就像往常引用第三方库一样引入你发布的依赖库即可
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation('com.sswl.plugindev:dev:v1.0.38')
}