搭建本地仓库共分以下几个流程:
- 下载Maven并配置相关环境变量
- 在Android项目里引用本地仓库路径
- 找到对应的jar、aar文件放到本地仓库里
第一步:
第二步:
在build.gradle里添加:
maven { url 'file:D:\\android-studio\\gradle\\m2repository' }
示例:
构建工具先会从本地的url路径里寻找,如果没有找到,才会去到mavenLocal()里找, 如果还是没找到,才会从mavenCental()中央仓库、google()谷歌仓库、jcenter()仓库找。
接着需要在AndroidsStudio里勾选离线工作目录:
第三步:
找到maven的安装目录,我的是:D:\Program Files\apache-maven-3.6.3-bin (1)\apache-maven-3.6.3
打开conf\settings.xml,打开后找到localRepository,默认是被注释掉的,未修改时内容如下:
把注释取消掉,修改后是这个样子的:
找一个已经下载好的aar或者jar文件(我这里用okhttp-3.8.1.jar演示)然后用cmd执行以下命令:
复制下面这行:
mvn install:install-file -DgroupId=com.squareup.okhttp3 -DartifactId=okhttp -Dversion=3.8.1 -Dfile=C:\Users\good1\.gradle\caches\modules-2\files-2.1\com.squareup.okhttp3\okhttp\3.8.1\4d060ca3190df0eda4dc13415532a12e15ca5f11\okhttp-3.8.1.jar -Dpackaging=jar -DgeneratePom=true
完整路径解析:
D:\android-studio\gradle\m2repository\com\squareup\okhttp3\okhttp\3.8.1\okhttp-3.8.1.jar
DgroupId=组ID=com\squareup\okhttp3
DartifactId=文件名=okhttp
Dversion=版本号=3.8.1
Dfile=jar\aar所在的位置
Dpackaging=jar\aar
DgeneratePom=是否生成pom文件
解析出来的拼接为:
com\squareup\okhttp3\okhttp\3.8.1\okhttp-3.8.1.jar
由于上面已经配置了maven默认存储到D:\android-studio\gradle\m2repository仓库里,所以到本地仓库里去确认一下jar\aar是否存在即可(pom文件一定要生成,否则AndroidStudio会找不到依赖)。
然后在AndroidStudio正常引用就可以了(和引用网络仓库的方式是一样的)
implementation 'com.squareup.okhttp3:okhttp:3.8.1'
之后把网络断掉,也还是可以引用成功。
小知识:
buildscript和allprojects的区别:
1.buildscript
buildscript {
ext.kotlin_version = '1.1.51'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
buildscript主要用于声明gardle脚本自身所需要使用的资源,包括依赖项、maven仓库地址、第三方插件等。你可以在里面手动添加一些三方插件、库的引用,这样你就可以在脚本中使用它们了。因为是引用,所以gradle在执行脚本时,会优先执行buildscript代码块中的内容。 在此简单说明一下这里面单引号和双引号的区别,单引号只做字符串的拼写,不对$符进行转义。双引号具有运算能力,会对$符转义求值再替换。
2、 allprojects里是项目本身需要的依赖。
allprojects {
repositories {
google()
jcenter()
}
}
allprojects块的repositories用于多项目构建,为所有项目提供共同所需依赖包。