前期准备
参考文献
本文使用的环境是:
Mac开发机 + Nexus v3.20.1-01 + Android Studios v3.6.1
整理后的项目放在了github上:https://github.com/lzy-h2o2/Nexus-Maven
资源下载
访问sonatype下载对应系统的资源,速度貌似很慢,有时候还下载不了,我放在了百度云盘点这里访问,密码: u7uc。
安装部署环境
上一步下载后的资源解压后会有两个目录,一个是软件目录,一个是nexus平台目录
此时可以采用默认配置进入到bin命目录下,在终端执行命令启动nexus,其他知识点参见参考文献。
默认端口:8081
默认系统管理员用户名:admin
默认系统管理员密码:admin123
我们可以输入nexus status命令查看运行状态。
在浏览器中输入访问地址,我这里是:http://192.168.3.4:8081/
可以在nexus.properties这里修改默认地址:
查看本机IP后访问8081端口:
浏览器访问:
至此nexus环境已经配置完成。
创建maven仓库
使用默认管理员账户登录可以看到类似如下默认仓库
我们可以点击设置新建用户用于管理
创建新的用户
勾选2是因为admin仓库也可以查看当前用户下面的仓库,按需设置,退出当前admin账户,使用新建的账户重新登录系统。
新建maven仓库
如果是新建存储仓库的话需要选择host的类型,如下:
至此本地maven仓库创建成功
我们可以复制该仓库的本地地址用于android studios上传地址备用
上传本地资源至maven仓库
打开android studios新建moudle仓库如图:
围为了方便统一管理,我在lib_testmoudle根目录下新建了一个配置文件,用于设置maven仓库的相关配置
在lib_testmoudle根目录下build.gradle中进行脚本设置,自android studios2.2版本以后编辑器默认支持maven插件,不需要再配置classpath了。
上传资源仓库脚本(其中project.ext指的就是上面我单独创建的配置文件的引用)
uploadArchives {
def MAVEN_REPO_RELEASE_URL = project.ext.maven_url
def NEXUS_USERNAME = project.ext.user_name
def NEXUS_PASSWORD = project.ext.psw
def DESCRIPTION = project.ext.description
def ARTIFACT_ID = project.ext.artifactId
def GROUP_ID = project.ext.groupId
def VERSION = project.ext.version
def TYPE = project.ext.type
configuration = configurations.archives
repositories {
mavenDeployer {
repository(url: MAVEN_REPO_RELEASE_URL) {
authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
}
pom.project {
version VERSION
artifactId ARTIFACT_ID
groupId GROUP_ID
packaging TYPE
description DESCRIPTION
}
}
}
}
然后在android studios右上角gradle视窗中可以管理任务脚本uploadArchives
双击就可以进行编译并上传资源文件至本地maven仓库了
我们浏览器打开后台管理页面就可以看到仓库中已经有上传的资源
使用本地仓库
还是以本例创建的项目为例,app model想要引用该本地仓库,我们可以在moudle app根目录下的build.gradle中添加allprojects引用脚本节点,一版我们都是在整个项目空间的build.gradle下引用的,一劳永逸,比较方便。
首先添加下载地址,前面已经复制的仓库地址
其次,在需要引用的moudle根目录build.gradle脚本中添加仓库引用
(可以在nexus系统中直接复制,到AS中会自动转化)
有的时候需要在说明引用的资源类型,比如
compile 'com.zndroid:hello-maven:1.0.2@aar'
编译运行
经过以上操作我们进行编译,让AS去下载资源文件
发现报错:
出现这种错误大概有几种情况
- 网络异常
- 资源位置配置错误
- 用户名密码错误
- 防火墙
- AS进行了代理配置
我们根据具体错误代码进一步查看问题
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200406151631402.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x1emhlbnl1eGZjeQ==,size_16,color_FFFFFF,t_70
解决方案一
401错误,也就是用户未授权问题,点击蓝色链接跳转到浏览器,输入用户名密码发现是可以访问的,也就是位置和网络配置是正确的,那么401问题,是由于我们么有授权任意用户进行访问的配置,我们在nexus后台进做如下更改即可:
将复选框勾选即可。
重新编译发现成功了!!!
External lLibraries可以查看引用状态
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020040615261710.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x1emhlbnl1eGZjeQ==,size_16,color_FFFFFF,t_70
解决方案二
在 [使用本地仓库]章节 使用maven仓库时添加账号授权
maven {
url 'http://192.168.3.4:8081/repository/zndroid/'
credentials {
username 'lazy'
password '123456'
}
}
使用的话就敲击简单了