Android利用Nexus搭建maven私服

前期准备

参考文献
本文使用的环境是:
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去下载资源文件
发现报错:
在这里插入图片描述出现这种错误大概有几种情况

扫描二维码关注公众号,回复: 11325093 查看本文章
  1. 网络异常
  2. 资源位置配置错误
  3. 用户名密码错误
  4. 防火墙
  5. 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'
    }
}

使用的话就敲击简单了
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/luzhenyuxfcy/article/details/105308788