Cf90e72328ff1e57c3cdb2a90eab6f98
Android Maven 私有库

一、前言

Maven

Maven 是一个项目管理和自动构建工具。Maven 包是由 POM(Project Object Model)所定义的文件包格式。Maven 包集中存放的地方,就是 Maven 仓库。这些仓库,可以是放在本地,也可以放在某个远程服务器上。 可以是私有仓库,也可以是公开的。使用方式如下

allprojects {
    repositories {
        mavenCentral();
        jcenter()
        maven {
            url 'file:///Users/name/Documents/Android/repo/'
        }
        maven {
            url 'http://x.x.x.x:8081/nexus/repositories/android/'
        }
    }
}

Gradle

Gradle 是一个基于 JVM 的构建工具,是一款通用灵活的构建工具,支持 Maven, Ivy 仓库,支持传递性依赖管理,而不需要远程仓库或者是 pom.xml 和 ivy.xml 配置文件,基于 Groovy,build 脚本使用 Groovy 编写。

Android 支持的 Maven 仓库:

  • mavenCentral:最早的 maven 中央仓库
  • jcenter:Android Studio 0.8 版本起的默认 maven 中央仓库
  • 本机仓库
  • 内网服务器的私有仓库

二、搭建 Maven 私有库原因

每一种技术,每一个框架都不是凭空产生,都是为了解决特定需求。因此使用什么技术取决于我们的需求,作为一个研发人员,我们不仅仅要懂得编码,更要有洞察真实需求的能力

做开发时间长的同学一般都会开发多个 App。而这些 APP 有很多共同的部分,比如一些工具类,自定义 UI,视频播放功能等甚至是框架。为了提高整体团队的开发效率,不重复造车轮子,我们便会设想把这些可以复用的代码通过一种特殊的方式进行管理。而 Maven 正符合我们的要求。这样做有几点好处:

  • 实现模块化,不同功能模块可以单独引入,优化实现方式,符合类似单一原则

  • 对各个模块进行版本迭代更新,执行持续集成。某个模块修改了,跑单元测试,通过后才放上仓库,保证模块质量。

  • 带版本管理,有问题还可以回滚到上一个版本

  • 组件化,按功能拆分出各种组件,数据存储、网络层、日志 等。提高代码复用率

  • 私有库带缓存,可提高引用公开模块的速度

三、搭建 Maven 私有库

Nexus

Nexus 是一个基于 Maven 的仓库管理的社区项目。主要的使用场景就是可以在局域网搭建一个 Maven 私服,用来部署第三方公共构件或者作为远程仓库在该局域网的一个代理。简单举个例子就是:第三方 Jar 包可以放在 Nexus 上,项目可以直接通过 Url 和路径配置直接引用。方便进行统一管理。同时有多个项目在开发的时候,一些共用基础模块可以单独抽取到 Nexus 上,需要用的项目直接从 Nexus 上拉取就行。封闭开发的过程中开发机是不能上公网的,所以连接 central repository 和下载 jar 就比较麻烦,这时就可以用 nexus 搭建起来一个介于公网和局域网之间的桥梁。

搭建

1、安装

前往 Nexus 官网 下载安装包,并解压存放到自己希望保存的目录。

2、启动

前往 nexus 存放位置下的 bin 文件夹,执行 ./nexus start。稍等 nexus 启动完毕,访问 http://127.0.0.1:8081 即可看到 nexus 欢迎页。

3、登录

使用用户名 admin 和默认密码 admin123 登录,即可创建和管理用户。

4、创建仓库

仓库分了三种类型:

  • hosted(宿主仓库):用来部署自己,第三方或者公共仓库的构件
  • proxy(代理仓库):代理远程仓库
  • group(仓库组):统一管理多个仓库

这里我们选择 hosted 作为私有库类型,创建 test 仓库。

四、上传私有库

新建 testutils module,并新建 Utils 测试类。

在项目的 build.gradle 中加入 mavenLocal

```
allprojects {
repositories {
google()
jcenter()

top Created with Sketch.