一、相关知识点
1.什么是Maven?
Maven
是一个项目管理和自动构建工具。Maven 包集中存放的地方,就是 Maven 仓库。这些仓库,可以是放在本地,也可以放在某个远程服务器上。 可以是私有仓库,也可以是公开的。
在Android上的使用方式如下:
allprojects {
repositories {
mavenCentral();
jcenter()
maven {
url 'file:///Users/my-user-name/Documents/Android/repo/'
}
maven {
url 'http://localhost:8081/nexus/content/repositories/releases/'
}
}
}
2.什么是Gradle?
Gradle
是一个基于JVM
的构建工具,是一款通用灵活的构建工具,支持maven
,Ivy
仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy
,build
脚本使用Groovy
编写。
Android支持的Maven仓库:
- mavenCentral 是最早的 maven 中央仓库
- jcenter 是 Android Studio 0.8 版本起的默认 maven 中央仓库
- 本机的仓库
- 部署在内网服务器的私有仓库
3.Nexus仓库
仓库类型:
- hosted(宿主仓库):用来部署自己,第三方或者公共仓库的构件
- proxy(代理仓库):代理远程仓库
- virtual(虚拟仓库):默认提供了一个 Central M1虚拟仓库 用来将maven 2适配为maven 1
- group(仓库组):统一管理多个仓库
Public Repositories: 仓库组
- 3rd party: 无法从公共仓库获得的第三方发布版本的构件仓库
- Apache Snapshots: 用了代理ApacheMaven仓库快照版本的构件仓库
- Central: 用来代理maven中央仓库中发布版本构件的仓库
- Central M1 shadow: 用于提供中央仓库中M1格式的发布版本的构件镜像仓库
- Codehaus Snapshots: 用来代理CodehausMaven仓库的快照版本构件的仓库
- Releases: 用来部署管理内部的发布版本构件的宿主类型仓库
- Snapshots:用来部署管理内部的快照版本构件的宿主类型仓库
4.什么是AAR?
AAR
文件是Google为Android开发所设计的一种library格式,全名为Android Archive Library,
与Java Jar Library不同的地方是AAR除了java code之外也包含res,也就是一些图片、文字等 资源文件。会设计形式的类别库是因为Google在Android SDK tool r14之后开始支持Library Project的开发方式,这种Library Project可以说是Android APP的半成品,其目标并不是制作成APK来执行,而是提供现成的View/Activiy等一些资源给其他开发者使用。而 AAR正是这种Library Project编译后的压缩包,压缩后只需传递单一文件即可分享,可以说是相当方便。
二、Maven库搭建(Nexus服务)
在本地搭建Maven库服务,用来上传常用代码库,便捷Android 项目开发使用
1.下载Nexus
打开 https://help.sonatype.com/
以下是对应系统下载相应文件
2.解压并运行nexus
2.1 通过命令行解压nexus-3.38.1-01-mac.tgz
tar xvzf nexus-3.38.1-01-mac.tgz
2.2 运行nexus,默认启动8081端口
./nexus run
./nexus start(首次无法启动)
2.3 验证是否运行成功
打开 http://127.0.0.1:8081/
3.登录并修改默认密码
登录(首次登录需要登录admin用户,密码在 /sonatype-work/nexus3/admin.password 中)
登录成功后会提示修改密码
4.新建用户
5.新建仓库
6.在Android Studio中上传aar包
6.1引用本地maven库
allprojects {
repositories {
mavenLocal()
}
}
6.2 上传aar到maven库中
uploadArchives {
repositories.mavenDeployer{
repository(url:"http://127.0.0.1:8081/repository/com.kangxiao.libs/"){
authentication(userName:"kangxiao",password:"kang123456")
}
pom.version="0.0.1"
pom.artifactId="kxlib"
pom.groupId="com.kangxiao"
}
}
引入maven插件
plugins {
id 'com.android.library'
id 'kotlin-android'
id 'maven'
}
7.在项目中引用库
注意事项:如果没有打开匿名访问的话,需要配置帐号密码
如果允许匿名访问的话,不需要配置帐号密码
在app下build.gradle
引用依赖
好了,到这就可以用了。