现在 Android Studio 使用 Gradle 作为依赖管理工具,
可以说是 Android 目前最好的依赖管理工具,我们经常通过在 build.gradle 通过简单的依赖配置就可以使用某个开源项目了,例如 okhttp、retrofit,但是如果公司把自己的核心库往 jcenter 上传又是不太可能的,基于这个问题,今天给大家带来了本篇文章,在强大的 Linux 平台,使用 Nexus3.x 为 Android 搭建私服,为公司构建自己的本地内部仓库。
Nexus 是 "开箱即用" 的系统,不需要数据库,它使用文件系统加 Lucene 来组织数据,支持 webDAV 与 LDAP 安全身份认证。Nexus 还提供了强大的仓库管理功能,构件搜索功能,它基于 REST,友好的 UI 是一个 extjs 的 REST 客户端,它占用较少的内存,基于简单文件系统而非数据库。
Nexus 极大地简化了本地内部仓库的维护和外部仓库的访问。另外,Nexus 还可以在代理远程仓库的同时维护本地仓库,以降低中央仓库的负荷,节省外网带宽和时间。
本篇 Nexus 选择 3.x 版本,Nexus3.x 相较 2.x 版本有很大的改变:
- 1)从底层重构,从而提高性能,增强扩展能力,并改善用户体验
- 2)升级界面,增加更多的浏览,搜索和管理功能
- 3)提供安装包,使部署更简单(安装完自动添加成服务,省去手动添加的麻烦)
- 4)增加 Docker,NuGet,npm,Bower的支持
- 5)提供新的管理接口,从而能自动管理任务。
- 注意:3.x版本只能运行在JVM8及以上
总之,本地内部仓库在本地构建 nexus 私服的好处有:
- 1)加速构建、稳定;
- 2)节省带宽、节省中央maven仓库的带宽;
- 3)控制和审计;
- 4)能够部署第三方构件;
- 5)可以建立本地内部仓库、可以建立公共仓库
这些优点使得 Nexus 日趋成为最流行的 Maven 仓库管理器。
这里 Linux 选用 CentOS7.2。
1)安装 jdk 参考文章
2)下载 Nexus 开源版本
3)上传服务器 Nexus 安装包,服务器 ip 假定为 192.168.2.20
- $ scp ~/Downloads/nexus-3.2.0-01-unix.tar.gz :/usr/local
4)安装 Nexus(源码安装方式)
- $ ssh //SSH连接
- # cd /usr/local
- # mkdir nexus
- # tar -zxvf nexus-3.2.0-01-unix.tar.gz -C nexus //解压缩
解压之后会有两个文件夹,nexus-3.2.0-01 和 sonatype-work
- # cd nexus
- # mv nexus-3.2.0-01/ nexus
自定义配置虚拟机可打开 nexus.vmoptions 文件进行配置(如果 Linux 硬件配置比较低的话,建议修改为合适的大小,否则会出现运行崩溃的现象):
- # cd nexus/bin/nexus.vmoptions //虚拟机选项配置文件
4)启动 Nexus(默认端口是 8081)
Nexus 常用的一些命令包括:/usr/local/nexus/nexus/bin/nexus {start|stop|run|run-redirect|status|restart|force-reload},下面我们启动 Nexus:
- # /usr/local/nexus/nexus/bin/nexus start //启动后稍等会儿才能正常访问
- WARNING: ************************************************************
- WARNING: Detected execution as "root" user. This is NOT recommended!
- WARNING: ************************************************************
- Starting nexus
上面在启动过程中出现警告:"不推荐使用 root 用户启动"。这个警告不影响 Nexus 的正常访问和使用。去掉上面 WARNING 的办法请自行百度。
下面用其他计算机访问 Linux 服务器:192.168.2.20:8081
出现上述页面,说明配置 nexus 成功!
点击 Nexus"Log in",
输入默认用户名(admin)和默认密码(admin123)登录。
可以点击上面的 "设置" 图标,在 "设置" 里可以添加用户、角色,对接 LDAP 等的设置,如下:
这里我们创建用户 user:
创建完成后退出 admin,登录 user。
我们点击 Repository 下 Repositories 创建 android 用户的仓库:
然后这里填写相关信息,创建仓库 android:
我们来看一下创建的仓库:
到此我们自己的仓库创建成功。
这里我们使用 Android Studio 新建一个 Android Project,然后新建一个 Android Library(module),命名为 utilslibrary,并在其中新建一个 Utils 类,供我们后续测试使用。
这个 module 也就是我们准备上传的 module。
1)配置 Project 的 build.gradle:
- allprojects {
- repositories {
- jcenter()
- mavenLocal()
- }
- }
2)配置准备上传的 Android Library 的 build.gradle 文件:
- apply plugin: 'com.android.library'
- apply plugin: 'maven'
- android {
- ...
- }
- uploadArchives {
- repositories.mavenDeployer {
- repository(url:"http://192.168.2.20:8081/repository/android/") {
- authentication(userName:"user", password:"user")
- }
- // 以com.android.support:appcompat-v7:25.1.0为对比
- pom.version="0.0.1" // 对应版本号 25.1.0
- pom.artifactId="utilslibrary" // 对应 appcompat-v7
- pom.groupId="net.smartbetter" // com.android.support
- }
- }
- dependencies {
- ...
- }
路径地址如下 copy:
3)双击 uploadArchives(如下图中按钮)上传 module:
等待 module 的上传:
当全部显示 ok 时上传成功,此时我们在电脑上打开私服(),登录用户 user,再看一下之前创建的仓库:
ok,到此 module 上传成功。
我们再在 Android Studio 中新建一个全新的 Android Project,然后配置 Project 的 build.gradle 文件:
- buildscript {
- ...
- }
- allprojects {
- repositories {
- jcenter()
- maven { url "http://192.168.2.20:8081/repository/android/" }
- }
- }
路径地址如下 copy:
此时我们就可以通过依赖的方式引用已经上传的 module 了:
我们直接在 build.gradle(Module:app) 添加依赖:
- compile 'net.smartbetter:utilslibrary:0.0.1'
我们看一下 External Libraries:
发现已经存在 utilslibrary-0.0.1 了,这时我们就就可以在我们的工程项目中调用 utilslibrary-0.0.1 的方法了。
以上就是如何从 Android Studio 中上传我们的 module,并如何通过依赖使用上传的 module 了。
喜欢本文记得 "顶" 一下哦!
来源: http://www.bubuko.com/infodetail-1947794.html