Android 项目部署之Nexus私服搭建和应用

一.概述

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

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

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

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

       接下来就简单介绍一下nexus的搭建以及在android项目中使用nexus的方式.

二.搭建

       1.下载&配置

       这里使用的是Nexus OSS开源版,官网下载地址:http://www.sonatype.org/nexus/go/ ,博主的开发环境是ubuntu,所以就下载的TGZ压缩的.

                                                     Android 项目部署之Nexus私服搭建和应用_第1张图片

       把压缩包解压之后进入bin文件夹就可以运行shell脚本来启动nexus,通过查看bin/nexus脚本发现可以修改脚本来适配自己的需求,例如修改Nexus的root路径,如果需要以root身份来启动Nexus就需要设置RUN_AS_USER=root,设置app名字和登陆名字等.也可以去conf/nexus.properties文件修改端口之类的信息.

Android 项目部署之Nexus私服搭建和应用_第2张图片

       接下来直接运行Nexus脚本,查看一下该脚本支持几个参数命令,将Nexus启动起来(在这之前博主的Nexus已经启动了所以就用的restart)

Android 项目部署之Nexus私服搭建和应用_第3张图片

       2.创建仓库

       从状态上来看nexus已经启动起来了,Nexus启动之后就可以在浏览器访问类似 192.168.9.190:9999/nexus/ 地址,其中ip为当前服务器ip,端口Nexus默认为8081,可以在conf/nexus.properties文件中修改端口.进入web管理页面后右上角登陆,Nexus默认的账号密码是admin:admin123,然后点击左侧的repositories查看现有的仓库列表.

Android 项目部署之Nexus私服搭建和应用_第4张图片

       这里的仓库分了四种类型

       1.hosted(宿主仓库):用来部署自己,第三方或者公共仓库的构件

       2.proxy(代理仓库):代理远程仓库

       3.virtual(虚拟仓库):默认提供了一个 Central M1虚拟仓库 用来将maven 2适配为maven 1

       4.group(仓库组):统一管理多个仓库

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

Android 项目部署之Nexus私服搭建和应用_第5张图片

       建立好新的仓库之后需要配置一下相关账号信息.在安全选项下选择用户选项,可以看到三个默认的账号,分别是管理员账号,部署账号和Nexus账号.正常访问仓库内容的时候是不需要这三个账户的,一般也就是把部署账号暴露出去,方便仓库项目维护人员部署项目使用.所以这里可以用默认的Deployment账户(记得reset下密码).也可以新建一个账号来使用,新建的时候可以通过add role management来控制该账号的权限.

Android 项目部署之Nexus私服搭建和应用_第6张图片          Android 项目部署之Nexus私服搭建和应用_第7张图片

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

       3.Android端私服仓库应用

       这里就拿之前分析过的Android 4.4原生DeckClock程序举例.Android 4.4 中的DeckClock项目需要依赖framework下的一个名叫datetimepicker的库工程.这里就把这个datetimepicker工程部署到Nexus上,让DeskClock根据仓库url和路径进行访问和datetimepicker版本控制.

       首先在DeskClock项目的build.gradle中配置之前建立的仓库.

allprojects {
    repositories {
        jcenter()
        mavenLocal()
    }
    dependencies{
        repositories {
            maven { url 'http://192.168.9.190:9999/nexus/content/repositories/jesse/' }
        }
    }
}
       接下来需要从项目中把datetimepicker模块剥离出来,因为我们要把它单独部署到刚刚配置的仓库里,DeskClock项目直接依赖datetimepicker模块改为通过Nexus依赖.剥离之后在datetimepicker模块中的build.gradle文件中使用uploadArchives方法向指定仓库上传有效的aar文件.并且配置pom文件信息.目前配置是默认走repository中的仓库,如果在版本号后面加上-SNAPSHOT就会走snapshotRepository中的仓库.artifactId是该模块的名字,groupId是仓库包名路径.
uploadArchives {
    repositories {
        mavenDeployer {
            snapshotRepository(url: 'http://192.168.9.190:8081/nexus/content/repositories/jesse-snapshot/') {
                authentication(userName: 'Jesse', password: 'jesse')
            }

            repository(url: 'http://192.168.9.190:8081/nexus/content/repositories/jesse/') {
                authentication(userName: 'Jesse', password: 'jesse')
            }

            pom.project {
                version '1.0.2'
                artifactId 'datetimepicker'
                groupId 'cn.jesse.android'
                packaging 'aar'
                description 'dependences lib'
            }
        }
    }
}

artifacts {
    archives file('datetimepicker.aar')
}
       在Android Studio的Gradle project插件中选中datetimepicker模块运行uploadArchives任务就可以将该模块的aar文件以1.0.2的版本部署到Nexus上,供其他项目引用.

Android 项目部署之Nexus私服搭建和应用_第8张图片 Android 项目部署之Nexus私服搭建和应用_第9张图片
       将datetimepicker部署到Nexus上之后,就可以在主模块的build.gradle直接通过部署时设置的groupId和version建立与datetimepicker之间的依赖.

dependencies {
    compile 'cn.jesse.android:datetimepicker:1.0.2'
}

转载请注明出处:http://blog.csdn.net/l2show/article/details/48653949

你可能感兴趣的:(Android,天南地北)