Nexus仓库

简介: Nexus是一款开源仓库管理工具,支持Maven、NPM、Docker等格式。本文介绍其在Linux与Docker环境下的安装配置,包括JDK部署、OSS版下载、仓库创建、用户权限管理及密码重置方法,并涵盖私服搭建、持久化存储、资源上传与匿名访问设置,助力企业高效构建私有仓库体系。

Nexus仓库
Linux安装
安装jdk8,并配置环境变量
安装后的路径为:/usr/java/jdk1.8.0_181-amd64
到 sonatype 官网下载Nexus Repository Manager OSS
Nexus分为开源免费的OSS版和Pro版。
此处可以选择下载开源免费的OSS版。
pro版多了资源健康检查等功能。
将下载的压缩包放到服务器解压
解压后会有两个文件夹:
sonatype将Nexus安装包托管到了 Fastly CDN,国内访问Fastly CDN非常卡顿。可能会下载失败,需要多试几次。
nexus-3.30.0-01
nexus软件
sonatype-work
nexus工作目录。
该文件夹和nexus软件在相同路径中,最好不要改动。
修改nexus的配置
编辑 nexus-3.30.0-01/etc/nexus-default.properties 文件
启动nexus
windows版:
使用管理员身份将nexus安装成一个windows服务
在windows的“服务”中可以找到nexus服务,启动该服务

Linux版:
执行 nexus指令查看其参数
不带参数直接运行nexus指令,会返回nexus可选参数列表
启动nexus(nexus不建议使用root用户执行)

浏览器放问nexus
http://192.168.29.141:8081/
启动较缓慢,需要等待一段时间才能连上
相关操作
登录
进入nexus的web管理页面后,所有的配置都是只读的,需要登录才能操作
点击Sign In 进行登录
默认用户名:admin
默认密码:在 /home/nexus/sonatype-work/nexus3/admin.password 文件中
旧版本Nexus没有该密码文件,默认密码为:admin123
首次登录需要修改密码,例如将密码改为:admin
修改密码后,admin.password文件会被自动删除
配置是否允许匿名访问
启用匿名访问意味着,用户可以在没有凭据的情况下从仓库搜索、浏览和下载组件。
使用管理员登录后,便可以在nexus的web页面中管理nexus。
可以配置仓库(仓库的创建等)、安全(用户、角色、域、权限、SSL、匿名账户等配置)、IQ Server、Support(日志查看、服务器状态、指标统计、系统信息、日志文件压缩、JVM堆存储压缩等)、系统(API、Email服务、定时任务等)
点击右上角的用户账户,进入用户详情页面,可以修改用户的密码。
忘记密码
如果更改完密码,把密码忘记了,密码不能找回,只能重新设置。
重置密码:参考官方文档
旧版本的密码存在配置文件中,3.x存储在数据库中。
nexus内置了一个图数据库OrientDB,密码信息存储在图数据库中。图数据库的数据文件位于 sonaptype/nexus3/db 文件夹中
关闭nexus,备份 sonaptype/nexus3/db 文件夹
登录OrientDB数据库控制台
连接数据库
使用下列语句重置密码为:admin123
如果 nexus中不存在admin用户:
OrientDB使用的是类SQL语言,不是SQL。
重启nexus服务器生效
仓库配置
自带的仓库配置:
maven-central:maven的中央仓库,,format为“maven2" , type为“proxy”(代理),Remote storage配置的代理的 远程maven仓库路径。如果要使用该仓库,只需拷贝该仓库的 URL 到自己的maven setting配置文件中。
maven-releases:jar包的正式发行版,type 为"hosted"(本地仓)。如果要使用该仓库,只需拷贝该仓库的 URL 到自己的maven setting配置文件中。
maven-snapshots:jar包的快照版,type 为"hosted",默认创建的maven的jar包即为快照版。
maven-public:聚合分组仓库。type为“group"(组),提供了聚合分组的功能。Member repositories配置的是该组包含的仓库成员。可以将需要配置的多个仓库都加入这个分组中,最终在maven setting配置文件中配置这个组的URL即可。
nuget-group、nuget-hosted、nuget.org-proxy 是 format 为“nuget" 的仓库示例。
创建仓库:
选择 Create repository
选择要创建的仓库类型,例如 maven2(proxy)(代理远程maven仓库)
设置仓库名称、代理的远程仓库地址 阿里云maven )
本地仓设置成允许重复提交:
默认情况下,创建的仓库只允许提交一次,需要设置成可重复提交。(如果禁止重复提交模式下,多次提交会报405错误)
进入需要配置的仓库,例如 maven-releases 、maven-snapshots
在 Hosted ---> Deployment policy ,选择 Allow redeploy
在maven中使用Nexus中的仓库
方式1:通过mirrors配置
在maven的settings.xml中进行配置:
如果用户名/密码错误,将会返回 401 错误(即没有权限)
方式2:通过profiles配置
在maven的settings.xml中进行配置
两种方式对比:
如果使用mirrors方式配置,当私服宕机时,maven项目的依赖便无法下载。
如果使用profile方式配置,当私服宕机时,maven项目的依赖会到自动切换到Maven远程仓库进行下载。
方式3:在项目中配置:
上传项目到nexus仓库
在maven的settings文件中添加配置:
上传不需要mirrors和profiles,仓库路径在项目的pom.xml中进行定义
在需要上传的资源的项目 pom.xml 中添加配置:
此处的地址不可以配置成 maven-public 的地址,因为maven-public是一个聚合仓库,此处需要指明要上传的仓库
在项目中执行 maven 的 deploy 命令。
如果项目的版本是 xxx-SNAPSHOTS,会上传到快照仓库,但是上传上去的jar包的名称后面会加上时间戳。
如果项目的版本是 xxx-RELEASE,会上传到发行版仓库,上传上去的jar包名称就是项目中的名称
使用Docker安装
安装方式1:使用docker部署
安装docker环境
从dockerHub上拉取nexus3的镜像
该镜像位于dockerHub上,但不是docker官方镜像,在网易数帆、阿里云等镜像中心都搜索不到。

从dockerHub上拉取时网络比较卡顿,如果网络超时就多试几次。
镜像拉取完成之后,使用docker进行运行
nexus3的web默认绑定的端口为8081
使用浏览器访问:http://192.168.29.131:8081
启动较慢,可能需要等待一会儿才能访问到
为了避免以后再次拉取nexus镜像较慢问题,在拉取镜像成功之后,将镜像导出成一个tar包。以后重新部署时直接将tar包作为镜像导入docker即可。
关闭docker容器时,确保有足够的时间使nexus的数据库关闭:
安装方式2:使用Docker file进行构建
有3个参数:

NEXUS_VERSION:Nexus Repository Manager的版本
NEXUS_DOWNLOAD_URL:Nexus Repository的下载路径,用于NEXUS_VERSION的替代方式
NEXUS_DOWNLOAD_SHA256_HASH:下载的Nexus Repository Manager的sha256校验。如果提供了NEXUS_VERSION或NEXUS_DOWNLOAD_URL,则sha256参数必需

使用rspec测试Dockerfile:
Docker相关配置
默认用户是 admin,第一次启动时,为其生成的一串UUID密码位于 /nexus-data/admin.password 中。
查看密码:
服务在新容器中可能需要2-3分钟才能启动,可以通过日志查看是否就绪:
nexus的安装方式为:/opt/sonatype/nexus
/nexus-data为永久目录,该目录用于配置、日志和存储,Nexus进程必需可写该目录。
可以通过 INSTALL4J_ADD_VM_PARAMS 环境变量,将JVM参数传递给启动脚本,默认为:-Xms2703m -Xmx2703m -XX:MaxDirectMemorySize=2703m -Djava.util.prefs.userRoot=${NEXUS_DATA}/javaprefs。
例如:
其中 -Djava.util.prefs.userRoot可以指定永久目录的路径。
可以通过 NEXUS_CONTEXT 环境变量来控制Nexus上下文路径,默认为 /。
例如:
数据持久化
因为永久目录默认为/nexus-data,所以需要对永久目录进行持久化。
方式1:使用docker volume卷。
docker volume卷是持久性的因为可以专门为此创建一个卷。官方推荐做法
方式2:使用主机目录。
因为主机目录中的数据本身不会清空,所以可以将主机目录作为docker中的/nexus-data目录进行挂载
创建npm私仓注意事项
正常创建好一个 npm 私仓后,通过 npm publish向私仓上传npm资源:
配置nexus,nexus默认npm是失效的。
使用管理员用户登录nexus的web管理页面
找到:security --> Realms
将npm Bearer Token Realm配置成 Active

将本地npm的仓库地址配置为私仓地址:
配置登录npm私仓的用户名、密码、邮箱
进入到package.json的同级目录,进行发布
此处需要注意,如果package.json中publishConfig配置了其他的registry,需要将其改为我们的私仓地址,或者去掉该配置。

否则会报错:-4048(即用户未登录的错误)
如果用户名密码有问题,可以找到.npmrc文件进行修改:
使用命令查看 .npmrc文件的路径
打开该文件,删除_authToken 的那一行
重新使用 npm login登录即可
仓库分文件夹存储
在Web管理页面:Repository --> Blob Stores
Create blob store
选择存储类型:File或者S3
例如选择 File 文件存储;
起一个Blob名称;
填写文件保存路径,默认为:/home/nexus/sonatype-work/nexus3/blobs/Blob名称
创建新的仓库时,便可以在 Storage --> Blob store 选择我们自定义的文件夹进行存储。
Maven
使用命令方式上传到私仓
命令:
整个资源库上传到私仓
将整个本地的资源库上传到nexus私仓:
先将本地repository仓库文件夹打成一个完整的zip压缩包
上传到nexus服务器上
解压zip
进入repository目录
清理*.lastUpdated、_remote.repositories文件
将本地仓库里面所有的maven-metadata-alimaven.xml改名为maven-metadata.xml(alimaven是本地maven的settings文件中设置的镜像仓库名)
编写 mvnimport.sh 脚本,内容如下
将私仓文件、sh脚本授权
执行shell脚本并传入参数
等全部导入完毕后,在nexus控制台页面刷新即可看到已导入的jar
Npm
将依赖使用命令上传
登录资源库
Shell
运行代码
复制代码
1
npm login
进入package.json页面,进行上传
Shell
运行代码
复制代码
1
npm push
Docker
使用命令上传镜像
登录资源库
Shell
运行代码
复制代码
1
docker login 资源库地址 -u 用户名
将要上传的镜像复制一个tag
Shell
运行代码
复制代码
1
docker tag mysql:8 192.168.xxx.xxx:8881/mysql:8
上传镜像
Shell
运行代码
复制代码
1
docker push 192.168.xxx.xxx:8881/mysql

相关文章
|
3天前
|
云安全 监控 安全
|
1天前
|
存储 机器学习/深度学习 人工智能
打破硬件壁垒!煎饺App:强悍AI语音工具,为何是豆包AI手机平替?
直接上干货!3000 字以上长文,细节拉满,把核心功能、使用技巧和实测结论全给大家摆明白,读完你就知道这款 “安卓机通用 AI 语音工具"——煎饺App它为何能打破硬件壁垒?它接下来,咱们就深度拆解煎饺 App—— 先给大家扒清楚它的使用逻辑,附上“操作演示”和“🚀快速上手不踩坑 : 4 条核心操作干货(必看)”,跟着走零基础也能快速上手;后续再用真实实测数据,正面硬刚煎饺 App的语音助手口令效果——创建京东「牛奶自动下单神器」口令 ,从修改口令、识别准确率到场景实用性,逐一测试不掺水,最后,再和豆包 AI 手机语音助手的普通版——豆包App对比测试下,简单地谈谈煎饺App的能力边界在哪?
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1081 6
|
10天前
|
机器学习/深度学习 人工智能 数据可视化
1秒生图!6B参数如何“以小博大”生成超真实图像?
Z-Image是6B参数开源图像生成模型,仅需16GB显存即可生成媲美百亿级模型的超真实图像,支持中英双语文本渲染与智能编辑,登顶Hugging Face趋势榜,首日下载破50万。
715 42
|
14天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
1148 41
|
14天前
|
人工智能 前端开发 算法
大厂CIO独家分享:AI如何重塑开发者未来十年
在 AI 时代,若你还在紧盯代码量、执着于全栈工程师的招聘,或者仅凭技术贡献率来评判价值,执着于业务提效的比例而忽略产研价值,你很可能已经被所谓的“常识”困住了脚步。
893 73
大厂CIO独家分享:AI如何重塑开发者未来十年
|
2天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
257 11
|
1天前
|
人工智能 JSON 前端开发
为什么你的API文档总是被吐槽?用这份"契约指令"终结前后端战争
本文针对前后端协作中"文档过时、不准确"的痛点,提供了一套实战验证的AI指令。通过强制结构化输入和自检机制,让AI自动生成包含完整参数、JSON示例和多语言代码的标准API契约文档,彻底解决接口沟通难题。
165 112
|
10天前
|
存储 自然语言处理 测试技术
一行代码,让 Elasticsearch 集群瞬间雪崩——5000W 数据压测下的性能避坑全攻略
本文深入剖析 Elasticsearch 中模糊查询的三大陷阱及性能优化方案。通过5000 万级数据量下做了高压测试,用真实数据复刻事故现场,助力开发者规避“查询雪崩”,为您的业务保驾护航。
539 31

热门文章

最新文章