Android的Nexus搭建Maven私有仓库与使用

Nexus概述

Nexus是一个基于maven的仓库管理的社区项目.主要的使用场景就是可以在局域网搭建一个maven私服,用来部署第三方公共构件或者作为远程仓库在该局域网的一个代理.简单举几个例子就是:

  • 第三方Jar包可以放在nexus上,项目可以直接通过Url和路径配置直接引用.方便进行统一管理.

  • 同时有多个项目在开发的时候,一些共用基础模块可以单独抽取到nexus上,需要用的项目直接从nexus上拉取就行(基础模块的实现,维护和部署可以交给专门的人员,其他项目不用关心代码实现,这样也可以达到保证核心代码不泄露).

  • 封闭开发的过程中开发机是不能上公网的,所以连接central repository和下载jar就比较麻烦,这时就可以用nexus搭建起来一个介于公网和局域网之间的桥梁

安装与配置

所需工具

  • JDK

  • Maven

  • Nexus OSS

  • tomcat

    (具体的环境变量配置就不说了)

启动Nexus 服务

  • 把zip包解压到指定路径如“D:\workbase”
  • 运行cmd然后进入“D:\workbase\nexus-2.6.0-05\bin”路径
  • 运行nexus.bat install命令安装nexus
  • 运行nexus.bat start命令启动nexus
  • nexus.bat stop停止 nexus.bat restart重启 nexus.bat uninstall卸载

下载War包

直接把war包放到tomcat的webapp下,启动tomcat即可。在浏览器地址栏输入http://localhost:8080/nexus/即进入nexus首页。有管理nexus要以管理员身份登录,点击首页右上角的login输入默认登录名、密码admin/admin123即可登录。(如果是公司的局域网服务器换成局域网ip地址就可以了)

登录成功就可以看到如下界面了:

Android的Nexus搭建Maven私有仓库与使用_第1张图片

这里的仓库分了四种类型

  • hosted(宿主仓库):用来部署自己,第三方或者公共仓库的构件
  • proxy(代理仓库):代理远程仓库
  • virtual(虚拟仓库):默认提供了一个 Central M1虚拟仓库 用来将maven 2适配为maven 1
  • group(仓库组):统一管理多个仓库

创建仓库

这里以建立hosted仓库为例简单介绍Nexus在Android开发中的实际使用情况.点击repositories->add 键入ID(部署项目的标识) Name等属性,这里需要注意的是,如果该仓库有多次部署的情况的话,将policy设置为allow redeploy,不然后续在部署的时候会出现403错误.

Android的Nexus搭建Maven私有仓库与使用_第2张图片

建立了新的仓库就可以配置下账号信息了,点击左边的Security下的Users,可以新建一个账号来使用,新建的时候可以通过add role management来控制该账号的权限.

Android的Nexus搭建Maven私有仓库与使用_第3张图片

回到repositories选项就可以看到新建出来的仓库,点击仓库URL可以直接进入到仓库路径,当然现在还没有部署项目.到此为止搭建Maven私服Nexus端的配置和部署都已经完成

Android客户端的仓库依赖

  • 在gradle.properties配置一些相关信息,主要是一些全局的配置信息
    MAVEN_URL= http://127.0.0.1:8080/nexus/content/repositories/thirdparty/
     MAVEN_SNAPSHOT_URL = http://127.0.0.1:8080/nexus/content/repositories/apache-snapshots/
     #maven groupId
     GROUP=common
     #账号
     NEXUS_USERNAME=admin
     #密码
     NEXUS_PASSWORD=admin123
     # groupid(最终你引用时的名字)
     GROUP_ID = com.efunor.tools 
     # type
     TYPE = aar
     # description
     DESCRIPTION = dependences lib
  • 在Module的build.gradle配置Task
     uploadArchives {
         configuration = configurations.archives
         repositories {
             mavenDeployer {
                 snapshotRepository(url: MAVEN_SNAPSHOT_URL) {
                     authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
                 }
                 repository(url: MAVEN_URL) {
                     authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
                 }
                 pom.project {
                    #版本,有更新时修改版本号,在上传
                     version '1.0.0'
                     #名字
                     artifactId 'DatePicker'
                     groupId GROUP_ID
                     packaging TYPE
                     description 'XXXXX'
                 }
             }
         }
     }

     artifacts {
        #编译的源码类型
         archives file('DatePickerview.aar')
     }
 记得在上面添加maven依赖(apply plugin: 'maven')
  • 点击Gradle找到upload点击就可以部署到Nextus上了

    Android的Nexus搭建Maven私有仓库与使用_第4张图片

Android的Nexus搭建Maven私有仓库与使用_第5张图片

  • 在其他的项目中引用

    首先在需要引用的项目中配置仓库地址,在 project 的 build.gradle中配置

    allprojects {
         repositories {
             jcenter()
             maven { url MAVEN_URL }
         }
     }
 将datetimepicker部署到Nexus上之后,就可以在主模块的build.gradle直接通过部署时设置的groupId和version建立与datetimepicker之间的依赖.

Android的Nexus搭建Maven私有仓库与使用_第6张图片

  • 配置更新与管理

    我个人是在SVN建立一个专门存放Maven的仓库,每次写项目时都会写一个Sample(包含 library 与使用的例子),然后将源码与例子全部上传都SVN,在把library 上传Nexus服务器。下次有代码需要更新的时候就可以将代码下下来改动,修改版本,提交SVN与Nexus。

end

其中在使用、创造、分享轮子的过程中,maven 仓库都是很有用处的。 好了,简单的Nexus的私有仓库搭建就到这了,如有问题欢迎指正交流。

你可能感兴趣的:(Android,汇总)