Maven实战(五)- Nexus 私服安装与使用

Maven实战(五)- Nexus 私服安装与使用

文章目录

  • Maven实战(五)- Nexus 私服安装与使用
    • 1.安装Nexus
      • 1.1.下载安装包
      • 1.2.Nexus启动命令
      • 1.3.登陆Nexus
    • 2.仓库与仓库组
      • 2.1.内置仓库
      • 2.2.仓库分类
      • 2.3.创建宿主仓库
      • 2.4.创建代理仓库
      • 2.5.创建仓库组
    • 3.配置Maven从Nexus下载构件
      • 3.1.项目配置
      • 3.2.全局配置
    • 4.部署构件至Nexus
      • 4.1.手动部署
      • 4.2.Maven部署构件
    • 5.权限管理
      • 5.1.Privileges
      • 5.2.Roles
      • 5.3.Users

有三种专门的Maven仓库管理软件可以用来帮助大家建立私服:Apache基金会的Archiva、JFrog的Artifactory和Sonatype的Nexus。

  • Sonatype Nexus: Sonatype Nexus是一个功能强大的Maven仓库管理软件,支持Maven、Gradle、Ivy等构建工具。它提供了统一的仓库管理平台,具备缓存、代理、分发、安全控制等功能。Nexus还支持插件扩展和LDAP集成等特性,可根据实际需求进行定制和扩展。
  • JFrog Artifactory: JFrog Artifactory也是一款流行的Maven仓库管理软件,具有类似的功能和特性。Artifactory支持多种构建工具,包括Maven、Gradle、Ivy、SBT等。它提供了强大的缓存和代理机制,支持分布式部署和高可用性配置。Artifactory还支持各种持续集成、部署和测试工具的集成。
  • Archiva: Archiva是Apache基金会的一个开源Maven仓库管理软件。虽然功能相对简单,但也提供了基本的仓库管理功能,包括仓库的创建、浏览、搜索等。Archiva还提供了灵活的安全机制和代理功能,支持多种构建工具。

其中,Nexus是当前最流行的Maven仓库管理软件。

1.安装Nexus

Nexus是典型的JavaWeb应用,它有两种安装包,一种是包含Jetty容器的Bundle包,另一种是不包含Web容器的war包。但是,Nexus从版本2.0开始自带嵌入式的Jetty Web容器,所以之后的版本只有一种安装包,本文将介绍这种安装方式。

1.1.下载安装包

官网下载地址:https://www.sonatype.com/products/sonatype-nexus-oss-download。

下载对应系统的安装包,并解压,如下图所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • nexus-3.20.1-01: 该目录包含了Nexus运行所需要的文件,如启动脚本、依赖jar包等。
  • sonatype-work: 该目录包含Nexus生成的配置文件、日志文件、仓库文件等。

其中,第一个目录是运行Nexus所必需的,而且所有相同版本Nexu实例所包含的该目录内容都是一样的。而第二个目录不是必须的,Nexus会在运行的时候动态创建该目录,不过它的内容对于各个Nexus实例是不一样的,因为不同用户在不同机器上使用的Nexus会有不同的配置和仓库内容。当用户需要备份Nexus的时候,默认备份 sonatype-work 目录,因为该目录包含了用户特定的内容,而nexus-3.20.1-01目录下的内容是可以以从安装包直接获得的。

1.2.Nexus启动命令

通过cd进入nexus-3.20.1-01/bin/目录下,Nexus的Linux启动命令:

  • ./nexus start:在后台启动Nexus服务。
  • ./nexus stop:停止后台的Nexus服务。
  • ./nexus status:查看后台Nexus服务的状态。
  • ./nexus restart:重新启台的Nexus服务。

1.3.登陆Nexus

通过./nexus start启动Nexus,然后在浏览器中输入http://localhost:8081/进入Nexus首页。

Nexus拥有全面的权限控制功能,默认的Nexus访问都是匿名的,而匿名用户仅包含一些最基本的权限,要全面学习和管理Nexus,就必须以管理员方式登录。可以单击界面右上角的Sign in进行登录,Nexus的默认管理员用户名为admin,默认密码存储在sonatype-work/nexus3/admin.password文件中。

在这里插入图片描述

2.仓库与仓库组

作为Maven仓库服务软件,仓库自然是Nexus中最重要的概念。Nexus包含了各种类型的仓库概念,包括代理仓库、宿主仓库和仓库组等。每一种仓库都提供了丰富实用的配置参数,方便用户根据需要进行定制。

2.1.内置仓库

在具体介绍每一种类型的仓库之前,先浏览一下Nexus内置的一些仓库。单击Nexus界面左边导航栏中的Browse链接,就能在界面右边看到如下图的内容(或者进入以下页面 Administration > Repository > Repositories)。从中可以看到仓库有四种类型:group(仓库组)、hosted(宿主)、proxy(代理) 和 virtual(虚拟);每个仓库的格式为maven2 或者 nuget;URL为仓库地址,当需要在项目中配置私服仓库时引用的url地址。

在这里插入图片描述

下面介绍一下各种仓库的用途:

  • maven-central: 该仓库代理Maven中央仓库,其策略为Release,因此只会下载和缓存中央仓库中的发布版本构件。

  • maven-releases: 这是一个策略为Release的宿主类型仓库,用来部署丝组织内部的发布版本构件。

  • maven-snapshots: 这是一个策略为Snapshot的宿主类型仓库,用来部署组织内部的快照版本构件。

  • maven-public: 该仓库组将上述三种类型的仓库聚合并通过一致的地址提供服务。

  • nuget-hosted: 一个预设的宿主类型仓库,用于存储和管理 NuGet 构件。

  • nuget.org-proxy: 用于代理 nuget.org 上的 NuGet 构件。

  • nuget-group: 该仓库组将上述两种类型的仓库聚合并通过一致的地址提供服务。

2.2.仓库分类

Maven可以直接从宿主仓库下载构件;Maven也可以从代理仓库下载构件,而代理仓库会间接地从远程仓库下载并缓存构件;最后,为了方便,Maven可以从仓库组下载构件,而仓库组没有实际内容(图中用虚线表表示),它会转向其包含的宿主仓库或者代理仓库获得实际构件的内容。

在这里插入图片描述

2.3.创建宿主仓库

如图所示,首先点击上方Tab栏中的 Administration 图标,然后选择左侧导航栏中的 Repositories 链接,在右侧面板中点击 Create repository 按钮。

在这里插入图片描述

选择仓库类型 maven2(hosted)。

在这里插入图片描述

内容信息说明:

  • Name: 表示仓库的名称
  • Online: 表示仓库的在线状态,即 Nexus 仓库是否可用并能够正常访问;
  • Version policy: 表示仓库存储构件的版本策略,有Release、Snapshot和Mixed三种;
  • Layout policy: 表示布局策略,要求验证所有的路径都应按照 Maven 标准布局规则进行组织;
  • Blob store: 用来存储实际包文件和元数据文件的物理存储位置;
  • Deployment policy: 用来配置该仓库的部署策略,选项有只读(禁止部署)、关闭重新部署(同一构件只能部署一次)以及允许重新部署;
  • Cleanup policies: 表示存储清理策略,用来来删除符合条件的构件。

在这里插入图片描述

2.4.创建代理仓库

同上述创建宿主仓库一样,选择仓库类型 maven2(proxy)。

相同的元素不再赘述。

  • Remote storage表示远程仓库的地址;

  • Use the Nexus Truststore:表示使用 Nexus 的信任存储(truststore)中的证书来连接外部系统。信任存储是一种用于存储可信任的数字证书的安全容器,在许多情况下,使用这些证书可以建立与外部系统的安全连接;

  • Auto-blocking enabled:表示如果检测到远程节点不可达或无响应,自动阻止对仓库的出站连接;

  • Maximum component age:表示最大构件年龄,控制存储在仓库中的构件的最长保留期。用于自动清理仓库中的旧构件,以保持仓库的整洁和性能;

  • Maximum metadata age:表示最大元数据年龄;

  • Routing Rule:用于允许或者限制对单个构件版本或该存储库中特定命名空间的访问;

  • Not found cache enabled:表示第一次请求一个不存在的构件时缓存该构件信息;

  • Not found cache TTL:表示缓存时间。HTTP用来配置某些认证信息或者请求头。

在这里插入图片描述

2.5.创建仓库组

同上述创建宿主仓库一样,选择仓库类型 maven2(group)。

Group用来筛选需要的仓库并纳入该仓库组。

在这里插入图片描述

3.配置Maven从Nexus下载构件

3.1.项目配置

通过在Maven项目目录下的pom.xml配置,将仅对该Maven项目有效。

    <project>...<repositories><repository><id>nexus</id><name>Nexus</name><url>http://localhost:8081/repository/maven-public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories><pluginRepositories><pluginRepository><id>nexus</id><name>Nexus</name><url>http://localhost:8081/repository/maven-public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></pluginRepository></pluginRepositories>...</project>

3.2.全局配置

上述的配置只对当前Maven项目有效,在实际应用中,我们往往想要通过一次配置就能让本机所有的Maven项目都使用自己的Maven私服。这个时候读者可能会想到settings.xml文件,该文件中的配置对所有本机Maven项目有效,但是settings.xml并不支持直接配置repositoriespluginRepositories。所幸Maven还提供了Profile机制,能让用户将仓库配置放到setting.xml中的Profile中。

<settings><profiles><profile><id>nexus</id><repositories><repository><id>nexus</id><name>Nexus</name><url>http://localhost:8081/repository/maven-public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories><pluginRepositories><pluginRepository><id>nexus</id><name>Nexus</name><url>http://localhost:8081/repository/maven-public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></pluginRepository></pluginRepositories><profile><profiles><activeProfiles><activeProfile>nexus</activeProfile></activeProfiles>
</settings>

4.部署构件至Nexus

如果只为代理外部公共仓库,那么Nexus的代理仓库就已经能够完全满足需要了。对于另一类Nexus仓库 —— 宿主仓库来说,它们的主要作用是储存组织内部的,或者一些无法从公共仓库中获得的第三方构件,供大家下载使用。用户可以配置Maven自动部署构件至Nexus的宿主仓库,也可以通过界面手动上传构件。

4.1.手动部署

当需要上传构件时,进入Browse页面,点击左侧导航栏中的 Upload,选择需要上传的仓库。

在这里插入图片描述

选择仓库后,进入到构造上传页面,需要选择文件及其扩展名,填写构件的依赖坐标。

在这里插入图片描述

4.2.Maven部署构件

日常开发生成的快照版本构件可以直接部署到Nexus中策略为Snapshot的宿主仓库中,项目正式发布的构件则应该部署到Nexus中策略为Release的宿主仓库中。在pom.xml中的配置文件如下。

<project>...<distributionManagement><repository><id>release_repo</id><name>maven-releases</name><url>http://localhost:8081/repository/maven-releases/</url></repository><snapshotRepository><id>snapshot_repo</id><name>maven-snapshots</name><url>http://localhost:8081/repository/maven-snapshots/</url></snapshotRepository></distributionManagement>...
</project>

Nexus的仓库对于匿名用户是只读的。为了能够部署构件,还需要在settings.xml中配置认证信息。

<settings><servers><server><id>release_repo</id><username>admin</username><password>*****</password></server><server><id>snapshot_repo</id><username>admin</username><password>*****</password></server></servers>
</settings>

5.权限管理

在组织中使用Nexus的时候往往会有一些安全性需求,例别如希望只有管理员才能配置Nexus,只有某些团队成员才能部署构件,或者更细一些的要求,例如每个项目都有自己的Nexus宿主仓库,且只能部署项目构件至该仓库中。Nexus提供了全面的权限控制特性,能让用户自由地根据需要配置Nexus用户、角色、权限等。

5.1.Privileges

管理仓库的多种权限。

在这里插入图片描述

  • Name: Privilege 的名称,用于唯一标识这个 Privilege。

  • Description: 对 Privilege 的描述信息,便于理解和管理。

  • Type: 指定 Privilege 的类型。有如下几种类型。

    • Application: 对应用程序级别的权限控制。
    • Repository Admin: 授予管理仓库的权限级别(Administration)。
    • Repository View: 授予访问仓库的权限级别(Browse)。
    • Repository Content Selector: 根据特定的筛选器条件选择搜索内容。
    • Script: 允许执行自定义脚本操作。
    • Wildcard: 拥有所有符合通配符模式的资源或操作的访问权限。
  • Permission: 对特定资源或操作的授权许可,以字符串形式表示。通常由目标资源类型和操作组成,使用冒号分隔。

5.2.Roles

Roles是一种组织权限的方式,用于集中管理和分配权限。角色定义了一组权限,可以将这些角色分配给用户,从而授予他们相应的权限。创建方式如下所示。

在这里插入图片描述

5.3.Users

用户可以被赋予一个或者多个角色,角色可以包含一个或者多个权限,角色还可以包含一个或者多个其他角色。在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS基础知识day4

目录 1. 浮动 1.1 传统网页布局的三种方式 1.2 标准流&#xff08;普通流/文档流&#xff09; 1.3 为什么需要浮动&#xff1f; 1.4 什么是浮动&#xff1f; 1.5 浮动特性&#xff08;重难点&#xff09; 1.6 浮动元素经常和标准流父级搭配使用 2.常见网页布局 2.1 常…

WEB应用(十四)---文件上传

什么是文件上传漏洞 文件上传是Web应用的常见功能&#xff0c;允许用户上传图片、视频及其他文件类型文件。如果用户上传的是木马文件&#xff0c;则服务器就会收到攻击。 对于这个漏洞的练习有一个专门的靶场&#xff0c;即upload-labs&#xff0c;这个的安装可以在windows中使…

顺序表的实现【数据结构】

文章目录 1.线性表2.顺序表2.1 概念及结构 3.模拟实现3.1 准备工作3.2 顺序表的初始化与销毁3.3 顺序表的尾插3.4 顺序表的尾删3.5顺序表的打印3.6 顺序表的头插3.7 顺序表的头删3.8 顺序表查找3.9 顺序表在pos位置插入x3.10 顺序表删除pos位置的值 4.代码整合 1.线性表 线性表…

【Linux学习】深入理解软硬链接

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;Linux从入门到进阶 欢迎大家点赞收藏评论&#x1f60a; 目录 &#x1f388;软硬链接&#x1f427;软链接&#x1f42c;硬链接 &#x1f438;总结软硬链接的原理&#x1f40d;软硬链接的应用场景&…

观成科技:海莲花活跃木马KSRAT加密通信分析

概述 自2023年8月至今&#xff0c;海莲花组织多次利用KSRAT远控木马对我国发起攻击。KSRAT通过HTTP协议与C&C服务器进行通信&#xff0c;每个样本都使用了不同的URL。其心跳包采用XOR算法进行加密&#xff0c;而控制指令包和数据回传包则使用了XOR以及“XORAES-128-CBC”组…

DC系列靶场---DC 7靶场的渗透测试

DC-7渗透测试 信息收集 地址探测 使用arpscan对目标地址进行探测 arp-scan -l I eth0 得到目标主机IP地址为172.30.1.132 扫描端口 使用nmap对目标主机做端口扫描 nmap -sS -sV -T4 -p- -O 172.30.1.132 扫描到目标主机开启了80端口、22端口。 -sS Nmap的SYN扫描&…

mapbox-gl 实现房间面生成墙(借助jsts)

文章目录 一、前言 一、前言 当我们从室外放大到室内展示室内图层时&#xff0c;我们可能只有房间面的数据&#xff0c;这时要展示房间墙数据&#xff0c;就需要借助工具对房间面进行缓冲&#xff0c;但是数据变动时&#xff0c;我们还要再次进行一下缓冲区生成操作。下面是借…

Copy as cURL 字段含义

当前端在开发过程中&#xff0c;遇到接口错误反馈给后端人员时&#xff0c;一般在此接口处右键复制为cURL。 格式如下&#xff1a; curl https://xxx.xxx.cn/xxx/xxx/management/record/list \-H accept: application/json, text/plain, */* \-H accept-language: zh-CN,zh;q0…

1.4 C 程序的编译过程与 CLion 调试技巧

目录 1 程序的编译过程 1.1 编写源代码 1.2 预处理&#xff08;Preprocessing&#xff09; 1.3 编译&#xff08;Compilation&#xff09; 1.4 汇编&#xff08;Assembly&#xff09; 1.5 链接&#xff08;Linking&#xff09; 1.6 执行 2 编译过程的输入输出文件概览 …

谷粒商城实战笔记-140-商城业务-nginx-搭建域名访问环境二(负载均衡到网关)

文章目录 一&#xff0c;通过域名访问商城架构设计1&#xff0c;为什么nginx要将请求转发给网关2&#xff0c;架构设计 二&#xff0c;配置1&#xff0c;nginx配置1.1 nginx.conf1.2 gulimall.conf1.3 配置原理 2&#xff0c;网关配置 三&#xff0c;记录2个问题1&#xff0c;网…

【C++】初识面向对象:类与对象详解

C语法相关知识点可以通过点击以下链接进行学习一起加油&#xff01;命名空间缺省参数与函数重载C相关特性 本章将介绍C中一个重要的概念——类。通过类&#xff0c;我们可以类中定义成员变量和成员函数&#xff0c;实现模块化封装&#xff0c;从而构建更加抽象和复杂的工程。 &…

基于MSER和HOG特征提取的SVM交通标志检测和识别算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 MSER 4.2 HOG特征提取 4.3 SVM 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2017b 3.部分核心程序 &#xff08;完整版代码包含中…

CMU15445 (Fall 2023) Project 1 - Buffer Pool 思路分享

文章目录 写在前面Task 1 - LRU-K Replacement PolicyTask 2 - Disk SchedulerTask 3 - Buffer Pool ManagerNewPageFetchPageUnpinPageDeletePageFlushPage 写在最后 写在前面 操作系统为应用程序提供了默认的缓存机制&#xff0c;DBMS作为应用程序&#xff0c;为什么不使用默…

LSLM论文

解决的问题 现在的语音模型&#xff08;SLM&#xff09;增强了语音对话的能力&#xff0c;但都局限于回合制对话&#xff0c;在实时对话的情境下与用户交互的能力有所欠缺&#xff0c;例如&#xff1a;当生成的对话不满意时被打断。所以&#xff0c;这篇论文在实时的的语音语言…

ShardingSphere自定义分布式主键生成策略、自定义分片规则

文章目录 主键生成策略源码KeyGenerateAlgorithm源码入口实现扩展 自定义分布式主键生成策略 分片算法ShardingAlgorithm实现扩展 自定义分片算法踩的坑 主键生成策略源码 开发者手册 KeyGenerateAlgorithm 全限定类名org.apache.shardingsphere.sharding.spi.KeyGenerateAl…

QT界面设计开发(Visual Studio 2019)—学习记录一

一、控件升级 简要介绍&#xff1a; 简单来说&#xff0c;控件提升就是将一个基础控件&#xff08;Base Widget&#xff09;转换为一个更特定、更复杂的自定义控件&#xff08;Custom Widget&#xff09;。这样做的目的是为了在设计界面时能够使用更多高级功能&#xff0c;而不…

环境搭建:全面详尽的 MongoDB Shell MongoDB Server介绍、安装、验证与配置指南(以 Windows 系统为主)

环境搭建&#xff1a;全面详尽的 MongoDB Shell & MongoDB Server介绍、安装、验证与配置指南&#xff08;以 Windows 系统为主&#xff09; MongoDB 是一个基于文档的 NoSQL 数据库&#xff0c;以其高性能、灵活性和可扩展性而受到广泛欢迎。本文将带您完成 MongoDB 的安装…

bpmn简单使用(制作流程图)

1、先下载依赖&#xff0c;下面是我下载的版本 "bpmn-io/properties-panel": "^3.23.0", "bpmn-js": "^17.9.1", "bpmn-js-properties-panel": "^5.6.1", "camunda-bpmn-moddle": "^7.0.1",…

CTFHUB-web-RCE-eval执行

开启题目 查看源码发现直接用蚁剑连接就可以&#xff0c;连接之后发现成功了

计算机网络408考研 2020

2020 湖科大教书匠的个人空间-湖科大教书匠个人主页-哔哩哔哩视频 计算机网络408考研 历年真题解析&#xff08;有字幕无背景音乐版&#xff09;_哔哩哔哩_bilibili 计算机网络408考研2020年真题解析_哔哩哔哩_bilibili 1 2 3 41 11 1