一 介绍与安装
1.1 简介
Nexus是一个强大的maven仓库管理器,它极大的简化了本地内部仓库的维护和外部仓库的访问。
Nexus是一套开箱即用的系统不需要数据库,它使用文件系统加Lucene来组织数据。
Nexus使用ExtJS来开发界面,利用Restlet来提供完整的REST APIs,通过IDEA和Eclipse集成使用。
Nexus支持webDAV与LDAP安全身份认证。
Nexus提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,占用较少的内存,基于简单文件系统而非数据库。
1.2 nexus 优点
- 节省外网带宽。
- 加速Maven构建。
- 部署第三方构件。
- 提高稳定性,增强控制。
- 降低中央仓库的负荷。
- 控制和审计
- 建立本地内部公用仓库
1.3 下载
官网地址:https://www.sonatype.com/
官网下载地址:https://www.sonatype.com/download-nexus-repo-oss
个人CSDN资源下载地址:https://download.csdn.net/download/lovelichao12/37689938
版本/收费/免费:Nexus Repository Manager 仓库管理有2个版本,专业版和oss版,oss版是免费的,专业版是收费的,我们使用oss版。
1.4 安装
1.4.1 Windows上安装Nexus3
(1)下载后解压,如图:
(2)进入nexus-3.19.1-01-win64\bin目录,内容如下:
nexus.vmoptions为配置文件,可根据机器修改其中配置(可选 )
(3)进入nexus-3.19.1-01-win64\nexus-3.19.1-01\etc目录,内容如下:
(4)nexus-default.properties为配置文件,可根据机器修改其中配置(可选 )
默认端口是8081,可自行修改。
(5)安装服务
在bin目录下,以管理员权限打开cmd,执行命令 nexus.exe /install,不填服务名默认为 nexus
(6)启动服务
在bin目录下,以管理员权限打开cmd,执行命令 nexus.exe /run
(7)登录Nexus3
浏览器输入localhost:port(port为修改后的端口号,未修改默认8081)
(8)点击登陆,输入账号密码
账号默认为admin,密码网上说的admin123在此版本中过时,官网说明。
进入nexus-3.19.1-01-win64\sonatype-work\nexus3找到admin.password文件,使用其中的密码登录。
1.4.2 Centos7上安装Nexus3
(1)上传安装包到指定目录,然后解压,内容如下:
(2)其他操作如以上windows,修改空间大小,修改端口号等。
(3)进入bin目录,给nexus添加执行权限
chmod 777 nexus
(4)启动命令
./nexus start 启动
./nexus restart 重启
./nexus stop 停止
(5)登录nexus
登录访问如以上windows,不在重复撰写。
二 Nexus仓库类型介绍
- hosted 本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第三方库。
- proxy 代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
- group 仓库组,用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。
三 自定义相关仓库
3.1 Blobstore 简介
Blobstore是位于SPDK bdev之上的Blob管理层,支持更上层的服务,如数据库MySQL、K-V存储引擎Rocksdb以及分布式存储系统Ceph、Cassandra等。
在Blobstore下层,与SPDK bdev层对接。SPDK bdev层,是对底层不同类型设备的统一抽象管理,例如NVMe bdev、Malloc bdev、AIO bdev等。bloblstore通过bdev提供驱动接口来进行数据持久化,比如我向blob中写入数据,blob就会将数据存入绑定的bdev 设备NVMe SSD的
3.2 创建Blobstore
type 选择 File,name 起个自己定义的名字,path 添加一个自定义目录,用于存储下载的依赖包,如果不新建Blobstore,默认是存在 sonatype-work/nexus3/blobs/default 目录中。
3.3 创建自定义仓库
四 本地关联私服配置
4.1 setting.xml 添加配置
<server>
<id>nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
<mirror>
<id>my-repository</id>
<mirrorOf>*</mirrorOf>
<name>my-repository</name>
<url>http://172.16.20.101:9200/repository/maven-public/</url>
</mirror>
配置认证和仓库信息,找到mavne中 setting.xml 文件,添加如上配置即可。
五 本地仓库批量导入私服
5.1 创建脚本
创建一个一个名为:mavenimport.sh 脚本,内容如下,放入本地仓库中,如:repository目录下。
#!/bin/bash
# copy and run this script to the root of the repository directory containing files
# this script attempts to exclude uploading itself explicitly so the script name is important
# Get command line params
while getopts ":r:u:p:" opt; do
case $opt in
r) REPO_URL="$OPTARG"
;;
u) USERNAME="$OPTARG"
;;
p) PASSWORD="$OPTARG"
;;
esac
done
find . -type f -not -path './mavenimport\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;
5.2 执行脚本
本地电脑需要安装客户端Git,通过Git命令执行命令
./mavenimport.sh -u admin -p admin123 -r http://172.16.20.101:9200/repository/my-repository/
六 上传项目jar到私服
当我们开发公共模块,这些公共模块需要公司其他小伙伴来使用,我们就可以将这些jar通过maven来管理,那么我们可以将公共模块打成jar上传到nexus3私服中。
修改mavne setting.xml配置文件。
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
修改pom.xml文件,配置上传私服信息。