Nexus 部署使用

1. 简介

Nexus是Maven仓库管理器,也可以叫Maven的私服,是私服的一种。
Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问和部署在你所维护仓库中的每个Artifact。Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。
Nexus不是Maven的核心概念,它仅仅是一种衍生出来的特殊的Maven仓库。对于Maven来说,仓库只有两种:本地仓库和远程仓库。
image.png

中央仓库是maven默认的远程仓库。
本地仓库就是我们在maven的setting.xml中配置的本地仓库地址。由于最原始的本地仓库是空的,Maven必须知道至少一个可用的远程仓库,才能在执行Maven命令的时候下载到需要的构件。

为什么我们要安装Nexus呢?

从项目实际开发来看:

  1. 一些无法从外部仓库下载的构件,例如内部的项目还能部署到私服上,以便供其他依赖项目使用。
  2. 为了节省带宽和时间。在局域网内架设一个私有的仓库服务器,用其代理所有外部的远程仓库及第三方构件。当本地Maven项目需要下载构件时,先去私服请求,如果私服没有,则再去远程仓库请求,从远程仓库下载构件后,把构件缓存在私服上。这样,即使暂时没有Internet链接,由于私服已经缓存了大量构件,整个项目还是可以正常使用的。同时,也降低了中央仓库的负荷。

image.png

参考文档:
https://blog.csdn.net/liusong0605/article/details/25654811

2. 部署安装

2.1 docker-compose部署

2.1.1 设置文件目录

在 /opt/ 下创建 docker-Nexus 目录。
并在 docker-Nexus 创建 nexus-data 目录,并赋权 chmod 777 nexus-data

2.1.2 编写 docker-compose.yml文件

vim docker-compose.yml

version: "3"   #版本号
services:    #启动的服务nexus: restart: always   #重启策略image: sonatype/nexus3   #镜像版本container_name: nexus   #定义容器名privileged: true   #定义容器特权user: root   ports:    #定义端口- 8081:8081volumes:    #定义数据持久化挂载- /opt/docker-Nexus/nexus-data:/nexus-data

2.2.3 启动

docker-compoes up -d
启动成功
image.png

2.2.4 登录浏览器查看

浏览器输入 ip+8081
1667802582926.jpg

2.2.5 登录并设置

进入到容器中,查看登录的初始密码
docker exec -it -u root nexus /bin/bash
find / -name "admin.password"
cat /nexus-data/admin.password
在右上角点击登录,输入用户名 admin 和初始密码,即可登录成功。
1667802643453.jpg

登录后按系统要求重新设置密码。
image.png

设置其他账户登录权限:选择禁用匿名访问。
1667802755080.jpg

至此可以正常使用 nexus。

2.2 安装包部署

部署环境准备:
提前安装好 JDK 和 Maven。
sudo apt install openjdk-8-jdk
sudo apt install maven
在 /opt 下创建 nexus目录,并将下载好的安装包放进来。

2.2.1 解压安装包

解压tar -xvf nexus-2.11.4-01-bundle.tar.gz
解压后会得到两个目录
nexus-2.11.4-01/:用于实现 nexus 功能
sonatype-work/:nexus 运行时数据(如日志,pid等)存储目录

2.2.2 修改配置文件

为避免与其他服务端口冲突,修改nexus的运行端口为:18080
cd 到 /opt/nexus/nexus-2.11.4-01/conf/ 目录下
vim nexus.properties
将端口改为18080。
image.png

cd 到 /opt/nexus/nexus-2.11.4-01/bin 目录下
vim nexus
将 user 改为 root。
image.png

2.2.3 启动

cd 到 nexus-2.11.4-01目录

  • 后台(守护进程)启动

./bin/nexus start

  • 前台启动

./bin/nexus run

2.2.4 登录浏览器查看

ip+18080/nexus/
注意:一定要在端口号后加上 /nexus/,否则会出现 HTTP ERROR: 404 Not Found 报错

登录
用户名 admin,默认密码 admin123

3. 基础使用(nexus3版本)

3.1 Nexus常用命令如下:

命令描述
run前台启动Nexus服务
start后台(守护进程)启动Nexus服务
restart重启Nexus服务
stop停止Nexus服务
force-reload重新加载配置文件
status查看Nexus状态

3.2 理解名词及概念

在学习使用之前,先理解一下 nexus 仓库的一些概念。
在仓库列表中,每个仓库都具有一系列属性:
Type:仓库的类型,Nexus 中有 4 种仓库类型:group(仓库组)、hosted(宿主仓库)、proxy(代理仓库)以及 virtual(虚拟仓库)。
Format:仓库的格式。
Policy:仓库的策略,表示该仓库是发布(Release)版本仓库还是快照(Snapshot)版本仓库。
Repository Status:仓库的状态。
Repository Path:仓库的路径。

Nexus 仓库按照类型(Type)区分,主要分为以下 3 个类型:

  • 代理仓库(proxy):用来代理远程公共仓库,如 Maven 中央仓库、JBoss 远程仓库。
  • 宿主仓库(hosted):又称 Nexus 本地仓库,该仓库通常用来部署本地项目所产生的构件。
  • 仓库组(group):用来聚合代理仓库和宿主仓库,为这些仓库提供统一的服务地址,以便 Maven 可以更加方便地获得这些仓库中的构件。

Maven 可以直接从宿主仓库中下载构件。
Maven 也可以从代理仓库中下载构件,代理仓库会从远程仓库下载并缓存构件。
Maven 还可以从仓库组中下载构件,仓库组会从其包含的宿主仓库和代理仓库中获取构件。

3.3 界面介绍

主界面

**Welcome:**欢迎界面
**Search:**搜索界面,可以根据自己的需求搜索想要的构件是否存在
**Browse:**浏览界面,列表展示配置的所有仓库,点击某一仓库记录的时候,可以浏览该仓库中拥有的构建。
**Upload:**上传界面,主要用来将自己的 jar包 上传到私服上的 Maven 仓库,也可以将 nuget 构件上传到私服上的 nuget 库。

仓库管理界面

**Repository:**提供仓库管理功能
**Repositories:**提供仓库的配置功能
**Blob Stores:**提供仓库中构件的存储,简单来说就是仓库中所有的构件就存放在这里,支持几种类型的存储
**Cleanup Policies:**提供仓库中构件的清理策略,配置清理策略并应用于仓库,那么仓库中的构件将会定期基于该策略进行清理。支持按时间顺序、使用频率等方式清理。

权限管理

**Security:**提供权限管理功能
**Privileges:**提供 Nexus 的权限管理功能,是比较细力度的权限定义。
**Roles:**提供 Nexus 的角色管理功能,角色可以理解为一组权限的集合。

  • nx-admin,管理员角色,拥有系统的所有权限
  • nx-anonymous,游客角色,仅拥有读写和搜索的权限

**User:**提供 Nexus 的用户管理功能,如果某些仓库仅想对某些人员开放,而不是对所有人开放,可以通过设置凭据访问来限制用户访问仓库,最简单的一种就是用户名密码凭据访问。

3.4 创建代码仓库

group(仓库组类型):又叫组仓库,用于方便开发人员自己设定的仓库,能把多个仓库合成一个仓库来使用。
hosted(宿主类型):是宿主机的意思,内部项目的发布仓库(一般分为releases发布版以及snapshots快照)。
proxy(代理类型):proxy就是代理的意思,代理中央Maven仓库,当PC访问中央库的时候,先通过Proxy下载到Nexus仓库,然后再从Nexus仓库下载到PC本地。
virtual(虚拟类型):虚拟仓库(这个基本用不到,重点关注上面三个仓库的使用)。

3.4.1 点击设置的小齿轮按钮

image.png

3.4.2 点击创建存储卡

3.4.3 选择创建的仓库类型

3.4.4 选择其他的相关设置

填好后,拉到最下方,点击 Create repository,即可创建成功

可以看到新创建的仓库。
image.png

3.5 上传本地jar包

3.5.1 命令行上传

mvn deploy:deploy-file -DgroupId=com.zmf -DartifactId=kingUtils -Dversion=2.0.0 -Dpackaging=jar -Dfile=./kingUtils-2.0.0-SNAPSHOT.jar -Durl=http://localhost:10086/repository/myself_hosted/ -DrepositoryId=nexus
-DgroupId=com.zmf   # jar包的组名,自定义
-DartifactId=kingUtils   # jar包名称,自定义
-Dversion=2.0.0   # jar包版本,三个自定义,构成pom.xml文件中的坐标
-Dpackaging=jar   # 打包方式,上传的类型是jar类型
-Dfile=./kingUtils-2.0.0-SNAPSHOT.jar   # jar包的本地磁盘位置
-Durl=http://localhost:10086/repository/myself_hosted/   # 远程库服务器地址
-DrepositoryId=nexus   # setting.xml文件中配置的ID
-DrepositoryId   #远程库服务器ID

image.png

3.5.2 web页面上传

选择 Upload --> maven-releases
image.png
选择文件,输入对应信息,点击上传即可。
image.png
查看,上传成功。
image.png

3.6 下载 jar

把第三方的 jar(aliyun-sdk-oss-3.1.0.jar) 保存到本地。

mvn install:install-file -Dfile=./aliyun-sdk-oss-3.1.0.jar -DgroupId=com.zmf -DartifactId=aliyun-oss -Dversion=1.0.0-SNAPSHOT -Dpackaging=jar

3.7 在maven中配置私服

在maven中配置私服,编辑setting.xml。文件路径:/etc/maven/settings.xml
settings.xml有什么用?
从 settings.xml 的文件名就可以看出,它是用来设置 maven 参数的配置文件。并且,settings.xml 是 maven 的全局配置文件。而 pom.xml 文件是所在项目的局部配置。
Settings.xml 中包含类似本地仓储位置、修改远程仓储服务器、认证信息等配置。
需要注意的是:局部配置优先于全局配置。
配置优先级从高到低:pom.xml> user settings > global settings
如果这些文件同时存在,在应用配置时,会合并它们的内容,如果有重复的配置,优先级高的配置会覆盖优先级低的。

<servers><server><!--这是server的id(注意不是用户登陆的id),该id与distributionManagement中repository元素的id相匹配。 --><id>nexus</id><username>admin</username><password>admin123</password></server>
</servers><!--为仓库列表配置的下载镜像列表。  -->
<mirrors><mirror><!--该镜像的唯一标识符。id用来区分不同的mirror元素。  --><id>nexus</id><!--此处配置所有的构建均从私有仓库中下载 *代表所有,也可以写central --><mirrorOf>*</mirrorOf><name>central repository</name><!--该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL。  --><url>http://127.0.0.1:8081/repository/maven-public/</url></mirror>
</mirrors><profiles><profile><id>nexus</id><!--远程仓库列表,它是Maven用来填充构建系统本地仓库所使用的一组远程项目。  --><repositories><!--发布版本仓库--><repository><id>nexus</id>      <!--地址是nexus中repository(Releases/Snapshots)中对应的地址--><url>http://127.0.0.1:8081/repository/maven-public/</url><!--true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。 --><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories></profile>     
</profiles><!--激活配置-->
<activeProfiles><!--profile下的id--><activeProfile>nexus</activeProfile>
</activeProfiles>

在项目中配置私服,pom.xml中添加。

<!--上传到nexus仓库中,配合mvn deploy:deploy-->
<distributionManagement><repository><id>nexus</id><name>Nexus snapshots Repository</name><!--snapshots仓库 --><url>http://127.0.0.1:8081/repository/maven-snapshots/</url></repository>
</distributionManagement>

Nexus和Maven有什么区别
Nexus和Maven是经常需要一起工作的两个软件,Nexus提供了一个存储库,而Maven使用一个存储库来构建软件。
可以简单理解为———Nexus是用来管理存储库,而Maven是访问该存储库。

参考文档:
https://www.cnblogs.com/breeze-zZ/p/11049743.html
https://blog.csdn.net/m18336132361/article/details/123580428
https://www.cnblogs.com/lqmblog/p/15655241.html

4. FAQ

常见问题:
启动 Nexus时,如果系统的文件空间不足4096MB,会启动失败,此时,可以增加硬盘容量或者调整存储上限:storage.diskCache.diskFreeSpaceLimit

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2868332.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Sonarqube中Java规则与CWE与OWASP的映射关系

很多企业使用Sonarqube社区版作为静态分析工具&#xff0c;在开发阶段检测代码中的缺陷或安全漏洞。但是如果是作为SAST工具厂商&#xff0c;集成该引擎&#xff0c;则需要把Sonarqube中的检测规则与其它引擎的规则进行整合&#xff0c;例如下图&#xff0c;把Sonarqube中的一些…

el-dialog弹框遮罩层问题

先看一下出现的bug&#xff0c;点击按钮出现弹框的时候&#xff0c;遮罩层出现在弹框上层&#xff0c;不知道是那个同事写的全局样式影响的&#xff0c;这个时候我们需要在el-dialog标签上添加一个属性就行 :modal-append-to-body“false” 下图是出现的问题&#xff0c;遮罩层…

js中的原型(原型对象,对象原型,原型继承,原型链)

js中的原型 一.原型二.constructor 属性三.对象原型四.原型继承五.原型链 一.原型 构造函数通过原型分配的函数是所有实例化对象所共享的。 JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象 …

代码随想录阅读笔记-哈希表【两个数组的交集】

题目 给定两个数组&#xff0c;编写一个函数来计算它们的交集。 说明&#xff1a; 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 提示&#xff1a; 1 < nums1.length, nums2.length < 10000 < nums1[i], nums2[i] < 1000 思路 交集&…

TCP机械臂控制

通过w(红色臂角度增大)s&#xff08;红色臂角度减小&#xff09;d&#xff08;蓝色臂角度增大&#xff09;a&#xff08;蓝色臂角度减小&#xff09;按键控制机械臂 注意&#xff1a;关闭计算机的杀毒软件&#xff0c;电脑管家&#xff0c;防火墙 1&#xff09;基于TCP服务器…

51单片机基础篇系列-定时/计数器的控制工作方式

&#x1f308;个人主页&#xff1a;会编程的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” 定时/计数器的控制 80C51单片机定时/计数器的工作由两个特殊功能寄存器控制&#xff0c;TMOD用于设置其工作方式&#xff1a; 1.工作方式寄存器TMOD 工作方式寄存器TMO…

Windows 桌面窗口管理器

前言 Windows 桌面窗口管理器&#xff08;Desktop Window Manager&#xff0c;简称DWM&#xff09;。桌面窗口管理器是Windows桌面环境的核心组件&#xff0c;主要负责处理窗口的显示和管理。它通过利用图形硬件加速技术&#xff0c;将窗口的处理转移到显卡上&#xff0c;提供…

HarmonyOS开发:NEXT版本开发新体验

前言 年前&#xff0c;公司团队接洽了鸿蒙方团队&#xff0c;确认了生态合作&#xff0c;于是开通了白名单权限&#xff0c;授权了新的IDE和相关文档的使用和查看&#xff0c;历经一月有余&#xff0c;谈谈NEXT版本有哪些开发上的区别。 本文会从以下几个方面阐述&#xff1a;…

论文阅读——MoCo

Momentum Contrast for Unsupervised Visual Representation Learning 动量在数学上理解为加权移动平均&#xff1a; yt-1是上一时刻输出&#xff0c;xt是当前时刻输入&#xff0c;m是动量&#xff0c;不想让当前时刻输出只依赖于当前时刻的输入&#xff0c;m很大时&#xff0…

jenkins容器中安装python遇到问题

在Jenkins容器中安装配置Python时遇到问题 执行./configure --prefix/opt/python3/时遇到configure: error: no acceptable C compiler found in $PATH 这个问题就是缺少gcc编译环境。将gcc安装上即可&#xff1a; yum install -y gcc##前提是容器里的系统是cenos才可以&#…

详解(实现)堆的接口函数

文章目录 堆堆的顺序存储 准备工作创建头文件Heap.h创建源文件Heap.c头文件的包含定义保存堆数据的结构体 初始化销毁堆插入数据向上调整算法图解算法代码 删除堆顶向下调整算法图解代码 取出堆顶数据求堆的数据个数判断堆是否为空全部代码Heap.hHeap.c 再了解堆之前我们先要了…

Unity AI Navigation插件快速使用方法

AI Navigation插件使您能够创建能够在游戏世界中智能移动的角色。这些角色利用的是根据场景几何结构自动生成的导航网格。障碍物可以让您在运行时改变角色的导航路径。 演示使用的Unity版本为Tuanjie 1.0.0,团结引擎是Unity中国的引擎研发团队基于Unity 2022 LTS版本为中国开发…

【算法杂货铺】模拟

目录 &#x1f308;前言&#x1f308; &#x1f4c1;1576. 替换所有的问号​编辑 &#x1f4c1; 495. 提莫攻击 &#x1f4c1; 6. Z 字形变换 &#x1f4c1;38. 外观数列 &#x1f4c1;1419. 数青蛙 &#x1f4c1; 总结 &#x1f308;前言&#x1f308; 欢迎观看本期【算…

SkyWalking上报Java应用数据

重要 本文中含有需要您注意的重要提示信息&#xff0c;忽略该信息可能对您的业务造成影响&#xff0c;请务必仔细阅读。 通过SkyWalking为应用埋点并上报链路数据至可观测链路 OpenTelemetry 版后&#xff0c;可观测链路 OpenTelemetry 版即可开始监控应用&#xff0c;您可以…

本地文件包含漏洞利用

目录 前期信息收集获取网站权限获取服务器权限纵向提权 前期信息收集 拿到目标的资产&#xff0c;先试一下IP能不能访问 探测一下目标的端口运行的是什么服务 nmap -sC -sV xx.xx9.95.185 -Pn获取网站权限 我们可以知道目标的80端口上运行着http服务&#xff0c;服务器是u…

【每日力扣】40.组合总和II与701. 二叉搜索树中的插入操作

&#x1f525; 个人主页: 黑洞晓威 &#x1f600;你不必等到非常厉害&#xff0c;才敢开始&#xff0c;你需要开始&#xff0c;才会变的非常厉害。 40.组合总和II 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为…

【研发日记】Matlab/Simulink技能解锁(二)——在Matlab Function编辑窗口Debug

文章目录 前言 行断点 条件断点 按行步进 Watch Value 分析和应用 总结 前言 见《【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug》 行断点 当Matlab Function出现异常时&#xff0c;如果能确定大致的代码段&#xff0c;就可以在相应的行上设置一…

综合知识篇00-综合知识考点汇总目录(2024年软考高级系统架构设计师冲刺知识点总结-综合知识篇-先导篇)

专栏系列文章推荐&#xff1a; 2024高级系统架构设计师备考资料&#xff08;高频考点&真题&经验&#xff09;https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】&#xff08;2024年软考高级…

解析编程中不可或缺的基础:深入了解结构体类型

精琢博客&#xff0c;希望可以给大家带来收获~ 博主主页&#xff1a;17_Kevin-CSDN博客 收录专栏&#xff1a;《C语言》 引言 在编程中&#xff0c;结构体是一种自定义的数据类型&#xff0c;它允许开发人员将不同类型的数据组合在一起&#xff0c;并为其定义相关属性和行为。…

(四)Android布局类型(线性布局LinearLayout)

线性布局&#xff08;LinearLayout&#xff09;&#xff1a;按照一定的方向排列组件&#xff0c;方向主要分为水平方向和垂直方向。方向的设置通过属性android:orientation设置 android:orientation 其取值有两种 水平方向&#xff1a;android:orientation"horizontal&…