背景

随着公司业务发展,项目越来越大,项目有好几个,项目虽然具体业务不同,但是其中也有很多相同的功能, 比如都有 weex 需求,网络请求、 图片处理、视频处理等等共同的需求,如果每个项目都重新写一遍,实现一遍,势必影响进度,重复造轮子的问题,项目进展缓慢,所以 就需要一种方式来避免这种重复劳动,彻底解决这种问题。

解决办法 : 使用组件化的思想, 把公共的组件抽离出来,和主项目的关系是依赖主项目的关系。module 是以 library的形式存在于整个project 中,依赖于主工程。在需要使用的时候,引入即可。
类似我们使用 recyclerview butterknife 之类的这些的功能, 这些内容有的是 Android官方提供的支持,有的是国内外优秀开发者开源出来的控件,我们可以很方便的集成到项目中。如下图:

仓库1.png

知名仓库介绍

目前有 jcenter() ,mavenCentral(), google() 等等仓库中心,这些仓库是用来保存代码的,组织或者个人开发者 开源出很多优秀的代码,工具,控件,上传到这些仓库中,我们可以通过 在 gradle 中配置相应的仓库地址 ,就可以方便使用相应的代码,

而内部使用的组件,不适合开源的可以自己搭建 私有仓库,内网使用,
还有一些需要借助代理访问,国内访问起来特别慢或者无法访问的内容,也可以上传到我们的私服上,能够很好地提高效率,减少同步等待时间

我们通过在 gradle 中配置相应的依赖,项目在 build 完成后就会将相应的 依赖工程代码 下载到 项目中, 可以在project 模式下 查看 External Libraries 看到实际下载下来的代码。

下面分别介绍下 这几个仓库,和私有仓库的搭建

jcenter

网页地址 http://jcenter.bintray.com/

mavenCentral

网页地址http://central.maven.org/maven2/

google

网页地址 https://dl.google.com/dl/android/maven2/

其他仓库

以阿里云为例
网页地址 http://maven.aliyun.com/nexus/content/repositories/jcenter/

上图中已经展示了 在项目中的配置这些仓库的方式。

这些仓库又有什么区别呢?

maven中央仓库http://repo1.maven.org/maven2/)是由Sonatype公司提供的服务,它是Apache Maven、SBT和其他构建系统的默认仓库,并能很容易被Apache Ant/Ivy、Gradle和其他工具所使用。开源组织例如Apache软件基金会、Eclipse基金会、JBoss和很多个人开源项目都将构件发布到中央仓库。 maven中央仓库已经将内容浏览功能禁掉了。

jcenter仓库https://jcenter.bintray.com )是由JFrog公司提供的Bintray中的Java仓库。它是当前世界上最大的Java和Android开源软件构件仓库。 所有内容都通过内容分发网络(CDN)使用加密https连接获取。JCenter是Goovy Grape内的默认仓库,Gradle内建支持(jcenter()仓库),非常易于在(可能除了Maven之外的)其他构建工具内进行配置。

JCenter相比mavenCenter构件更多,性能也更好。但还是有些构件仅存在mavenCenter中。

google()存储库是Google maven资源库的快捷方式。 它是在Gradle 4.x +中引入的。 使用的实际存储库URL是“https://dl.google.com/dl/android/maven2/”, 也可以使用 maven { url ‘https://maven.google.com’ }
但是 google(),则需要Gradle 4.x +,Android Studio 3.x +和Android 3.x +的Gradle插件。

maven (阿里云) maven.aliyun.com代理了很多公共的maven仓库。使用maven.aliyun.com中的仓库地址作为下载源,速度更快更稳定。
https://maven.aliyun.com/repository/public 是 central仓和jcenter仓的聚合仓 经过测试发现,可以代替 central 和 jcenter ,把阿里云的这个放到第一位会加快同步速度。

阿里云除了代理了 mavenCentral, jcenter还有 上面的 google() 基本上主流的 仓库都有, 在国内这个网络环境下, 使用阿里云的代理仓库是一个挺好的选择.

什么是Maven?

Maven 是一个项目管理和自动构建工具。是一个软件(特别是Java软件)项目管理以及自动构建工具,由Apache软件基金会所提供。是基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
Maven也可以被利用与构建和管理各种项目,例如:C#、Ruby、Scala和其他语言编写的项目。
Maven项目使用项目对象模型(Project Object Modle,POM)来配置项目,对象模型存储在名为pom.xm的文件中。

什么是Gradle?

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy(DSL语言,所谓的DSL是指这个语言应用在特定的领域,而类似Java这样是DCL语言,可以运用在普通的各个领域),而不是传统的xml语言,build脚本使用Groovy编写。当前支持的语言仅限于Java、Groovy、Scala、Kotlin。计划未来支持更多的语言。
Gradle改良了过去Maven、Ant带给开发者的问题,也已经成为Android Studio内置封装部署工具

Android支持的Maven仓库:

  • 1.mavenCentral 是最早的 maven 中央仓库
  • 2.jcenter 是 Android Studio 0.8 版本起的默认 maven 中央仓库
  • 3.本机的仓库
  • 4.部署在内网服务器的私有仓库

上面也说了,我们可以把自己写的优秀代码共享到这些代码仓库中供全世界 开发者使用,但是由于公司的项目很多不能公开,只可在公司范围使用,又需要在不同项目中可以方便接入,在后续功能修改时 又能通过版本控制 使用修改前后的功能均可正常使用, 这个时候可以 搭建私有 maven 仓库,部署我们的公共组件代码,就可以方便使用了。

使用Nexus搭建 maven 私服

下面演示在window上的安装过程

1.下载Nexus

下载地址:http://www.sonatype.com/download-oss-sonatype

2.解压zip文件,配置nexus下bin目录全局变量

然后打开我的电脑->属性->高级系统设置->高级->环境变量

在path 中配置 上面的bin 文件夹的路径进去 F:\Downloads\nexus-3.16.1-02-win64\nexus-3.16.1-02\bin

3.安装nexus服务,

以管理员身份运行 cmd 进入 上面bin的文件夹下, 运行nexus.exe/install Nexus Service命令
查看服务里就能看到

4.启动服务,

启动这个服务,稍等一会时间,在浏览器中访问 http://localhost:8081/

默认的用户名和密码登录(admin/admin123) 目前为止 服务搭建成功。

仓库的详细配置过程,请移步到官方网站
http://books.sonatype.com/nexus-book/reference3/admin.html#admin-repositories

0
分类: 未分类

bayshier

愿世间每个美好的灵魂都能被温柔以待

0 条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注