一:什么是maven、gradle?
Maven是一个项目管理和自动构建工具。
Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件;Gradle 基于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搭建起来一个介于公网和局域网之间的桥梁。
-
所需工具
-
安装Maven
Mac在终端输入brew install nexus,如果提示没有brew命令,请先安装brew
windows安装 -
安装成功
启动nexus
mac :brew services start nexus
windows:进入安装包的解压路径"…\bin\jsw\windows-x86-64",根据自己的系统选择文件夹,
运行nexus.bat install命令安装 nexus
运行nexus.bat start命令启动 nexus
运行nexus.bat stop停止 nexus
运行nexus.bat restart重启 nexus
运行nexus.bat uninstall卸载nexus启动后
浏览器访问地址 http://127.0.0.1:8081/nexus
mac使用此地址,可配置
默认用户:admin 密码:admin123 -
Maven配置
参照这里
命令行执行 gradle uploadArchives
到此服务器上就能看到上传的库了
- android gradle中使用
allprojects {
repositories {
jcenter()
mavenLocal()
maven {
//url 'file:///Users/apple/projects/maven/' //本地
url 'http://127.0.0.1:9999/repository/cody/' //服务器
}
}
}
应用形式
在app build.gradle 添加
implementation groupId:artifactId:version
例如:
implementation “com.google.code.gson:gson:2.8.5”
//学习总结,待细节完善