https://www.jianshu.com/p/666c64e8854d

前言

  什么是maven、gradle?

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

  Android支持的Maven仓库:
  mavenCentral 是最早的 maven 中央仓库
  jcenter 是 Android Studio 0.8 版本起的默认 maven 中央仓库
  本机的仓库
  部署在内网服务器的私有仓库

一、为什么需要搭建maven私有仓库?

  做java开发的童鞋对Maven一定不陌生;做android开发的童鞋,用得最多的是gradle。其实gradle的第三方库,也是放在maven仓库上。

  对于第三方库,大家基本都配置maven、gradle从远程获取,估计很少直接下载jar放在工程里(对于没有放在maven repository上的库,只能这么干)。这么做方便管理依赖。
app开发中遇到问题

  做app开发,特别是只有几万行代码量的小项目,开发团队也就几个人,通常只用一个工程玩耍。随着业务扩展,工程变得越来越大,代码量大大增加,开发人数也多了,问题开始暴漏:改动一个地方往往影响到其他人的代码,功能模块耦合严重,构建速度慢....

  业界一些解决方法:
1.组件化,按功能拆分出各种组件,数据存储、网络层、日志 等;
2.拆分业务,一个业务一个module;
3.业务插件化,一个业务一个工程,每个业务独立编译并运行.....

  因此,引入依赖管理是必不可少的。把各个模块单独编译,部署上maven仓库,主工程or业务工程通过maven、gradle引用这些依赖。这么做还有好处,就是持续集成!某个模块修改了,跑单元测试,通过后才放上仓库。业务工程同步一下maven,万一有问题,还可以在服务端回滚到上一个版本。

  所以我们希望通过搭建一个私有maven仓库,来提高我们的开发效率。

二、 使用Nexus搭建 maven 私服

  Nexus是什么?

  Nexus是一个基于maven的仓库管理的社区项目.主要的使用场景就是可以在局域网搭建一个maven私服,用来部署第三方公共构件或者作为远程仓库在该局域网的一个代理.简单举几个例子就是:
  第三方Jar包可以放在nexus上,项目可以直接通过Url和路径配置直接引用.方便进行统一管理.
  同时有多个项目在开发的时候,一些共用基础模块可以单独抽取到nexus上,需要用的项目直接从nexus上拉取就行(基础模块的实现,维护和部署可以交给专门的人员,其他项目不用关心代码实现,这样也可以达到保证核心代码不泄露).
  封闭开发的过程中开发机是不能上公网的,所以连接central repository和下载jar就比较麻烦,这时就可以用nexus搭建起来一个介于公网和局域网之间的桥梁

三、所需工具

四、使用Nexus搭建 maven 私库

1、Nexus下载

  官网下载地址:https://www.sonatype.com/download-oss-sonatype,我的开发环境是Windows,我下载的是Nexus Repository Manager OSS 2.xx下面的 All platforms nexus-2.14.8-01-bundle.zip压缩文件。

Android gradle Nexus Maven私有仓库搭建笔记

Nexus下载

 

2、Nexus启动

  下载完成之后,解压后进入D:\xpkit\other\nexus-2.14.8-01-bundle\nexus-2.14.8-01\bin\jsw\windows-x86-64,根据操作系统类型选择文件夹,我选的是windows-x86-64文件夹,进入后可看到如下所示bat文件。

Android gradle Nexus Maven私有仓库搭建笔记

Nexus解压后文件

  • 把zip包解压到指定路径如“D:\xpkit\other”
  • 运行cmd然后进入“D:\xpkit\other\nexus-2.14.8-01-bundle\nexus-2.14.8-01\bin\jsw\windows-x86-64”路径
  • 运行nexus.bat install命令安装nexus
  • 运行nexus.bat start命令启动nexus
  • nexus.bat stop停止 nexus.bat restart重启 nexus.bat uninstall卸载

  双击console-nexus.bat运行。再浏览器中输入http://127.0.0.1:8081/nexus/,出现如下图所示就代表nexus已经启动成功。

Android gradle Nexus Maven私有仓库搭建笔记

Neuxs运行成功

3、登录Nexus

  管理nexus要以管理员身份登录,点击首页右上角的login输入默认登录名、密码admin/admin123即可登录。(如果是公司的局域网服务器换成局域网ip地址就可以了)。登录成功就可以看到如下界面了:

Android gradle Nexus Maven私有仓库搭建笔记

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、创建仓库

  这里以建立hosted仓库为例简单介绍Nexus在Android开发中的实际使用情况.点击Repositories –> Add –> Hosted Repository,键入ID(部署项目的标识) Name等属性,这里需要注意的是,如果该仓库有多次部署的情况的话,将policy设置为allow redeploy,不然后续在部署的时候会出现403错误。这里我点击添加宿主类型的仓库,在仓库列表的下方会出现新增仓库的配置,如下所示:

Android gradle Nexus Maven私有仓库搭建笔记

新增仓库配置

  点击save按钮后就会在仓库列表中看到刚才新增的仓库。

Android gradle Nexus Maven私有仓库搭建笔记

新增仓库

五、上传库到Maven仓库

1.首先新建一个module,选择Android Library,类似下面这种结构

Android gradle Nexus Maven私有仓库搭建笔记

Android Library项目

 

2.项目的根目录的gradle.properties配置一些相关信息,主要是一些全局的配置信息

Android gradle Nexus Maven私有仓库搭建笔记

gradle.properties

 

3.修改module对应的build.gradle文件,添加以下配置

Android gradle Nexus Maven私有仓库搭建笔记

build.gradle

 

  注意:记得在module对应的build.gradle文件上面添加maven依赖apply plugin: 'maven'

4.点击uploadArchives进行编译上传

Android gradle Nexus Maven私有仓库搭建笔记

uploadArchives编译上传

 

5.去仓库查看到刚刚上传的库文件

Android gradle Nexus Maven私有仓库搭建笔记

查看库文件

 

六、在Android项目中应用Maven库文件

1.新建一个项目,在项目的根目录build.gradle配置如下:

Android gradle Nexus Maven私有仓库搭建笔记

项目的根目录build.gradle配置

 

2.在app目录下的build.gradle配置如下:

Android gradle Nexus Maven私有仓库搭建笔记

app目录下的build.gradle配置

 

  至此配置就算结束了,就可以在Android项目中应用刚刚上传的Maven库文件了。

  Demo下载地址:https://github.com/XieXiePro/MavenDemo

参考:
  1,拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建
  2,使用Gradle和Nexus 搭建私有maven仓库
  3,Android的Nexus搭建Maven私有仓库与使用
  4,Android业务组件化之Gradle和Sonatype Nexus搭建私有maven仓库
  5,Maven私服并结合Android Studio(结合最新版的Nexus)配置详解:



作者:Haraway
链接:https://www.jianshu.com/p/666c64e8854d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章:

  • 2021-05-20
  • 2021-06-13
  • 2021-12-18
  • 2021-06-11
猜你喜欢
  • 2021-06-13
  • 2022-12-23
  • 2022-12-23
  • 2021-11-19
  • 2021-06-13
  • 2022-12-23
  • 2021-07-03
相关资源
相似解决方案