Nexus概述
Nexus是一个基于maven的仓库管理的社区项目.主要的使用场景就是可以在局域网搭建一个maven私服,用来部署第三方公共构件或者作为远程仓库在该局域网的一个代理.简单举几个例子就是:
- 第三方Jar包可以放在nexus上,项目可以直接通过Url和路径配置直接引用.方便进行统一管理.
- 同时有多个项目在开发的时候,一些共用基础模块可以单独抽取到nexus上,需要用的项目直接从nexus上拉取就行(基础模块的实现,维护和部署可以交给专门的人员,其他项目不用关心代码实现,这样也可以达到保证核心代码不泄露).
- 封闭开发的过程中开发机是不能上公网的,所以连接central repository和下载jar就比较麻烦,这时就可以用nexus搭建起来一个介于公网和局域网之间的桥梁
安装与配置
所需工具
启动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地址就可以了)
登录成功就可以看到如下界面了:
这里的仓库分了四种类型
- hosted(宿主仓库):用来部署自己,第三方或者公共仓库的构件
- proxy(代理仓库):代理远程仓库
- virtual(虚拟仓库):默认提供了一个 Central M1虚拟仓库 用来将maven 2适配为maven 1
- group(仓库组):统一管理多个仓库
创建仓库
这里以建立hosted仓库为例简单介绍Nexus在Android开发中的实际使用情况.点击repositories->add 键入ID(部署项目的标识) Name等属性,这里需要注意的是,如果该仓库有多次部署的情况的话,将policy设置为allow redeploy,不然后续在部署的时候会出现403错误.
建立了新的仓库就可以配置下账号信息了,点击左边的Security下的Users,可以新建一个账号来使用,新建的时候可以通过add role management来控制该账号的权限.
回到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上了
- 在其他的项目中引用
首先在需要引用的项目中配置仓库地址,在 project 的 build.gradle中配置
allprojects {
repositories {
jcenter()
maven { url MAVEN_URL }
}
}
将datetimepicker部署到Nexus上之后,就可以在主模块的build.gradle直接通过部署时设置的groupId和version建立与datetimepicker之间的依赖.
- 配置更新与管理
我个人是在SVN建立一个专门存放Maven的仓库,每次写项目时都会写一个Sample(包含 library 与使用的例子),然后将源码与例子全部上传都SVN,在把library 上传Nexus服务器。下次有代码需要更新的时候就可以将代码下下来改动,修改版本,提交SVN与Nexus。
end
其中在使用、创造、分享轮子的过程中,maven 仓库都是很有用处的。 好了,简单的Nexus的私有仓库搭建就到这了,如有问题欢迎指正交流。