超详细 | 使用Nexus搭建私服 (带代码演示)

2024-06-10 17:52

本文主要是介绍超详细 | 使用Nexus搭建私服 (带代码演示),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

为什么需要搭建私有仓库?

在企业开发的过程中,不是所有公司都能直接访问外网。在这种情况下,就需要在局域网内找一台有外网访问权限的服务器,搭建Nexus私服仓库,开发人员连接到这台私服上,通过搭建的Nexus私服访问远程仓库。

并且,我们要知道,内网的速度,是不同于外网,外网可能会受到公开网络的攻击,并且传输速度也远低于内网。

其次,我们需要上传第三方Jar包到maven仓库,若上传至公网,数据会有泄露的风险,若在私服,数据安全性会大大提高!

Nexus简介

Nexus是Sonatype公司的一款用于搭建私服的产品,使用非常广泛。

在早期,我们都拿Nexus当maven私服仓库,后来,随着版本的不断更新,它支持的数据类型越来越多,比如npm仓库,nuget仓库,ruby仓库,docker镜像仓库等等。

Nexus主要分为2.x和3.x两个大版本,而且这两大版本相互不影响,并且都在不断更新迭代。但是其功能大致相同!!

安装包下载网址:

Download Nexus Repository OSS | SonatypeDownload Nexus Repository OSS - the world's first & only universal repository solution that's FREE to use & provides cutting-edge support for multiple formats.icon-default.png?t=N7T8https://www.sonatype.com/products/sonatype-nexus-oss-download

历史版本查看网址:

Download Archives - Repository Manager 3icon-default.png?t=N7T8https://help.sonatype.com/en/download-archives---repository-manager-3.html

安装

安装版本:nexus-3.58.1-02 

 因为Nexus是java写的,这里需要配置java的环境变量,需要java8版本及以上

解压缩

解压后是两个文件

nexus-3.58.1-02是nexus的运行程序

sonatype-work是nexus的工作空间,仓库文件存储位置

可以在nexus-3.58.1-02的bin目录下 nexus.vmoptions文件,查看nexus的配置

主要是对Nexus运行时的一些配置信息,如内存使用,日志存储文件位置,数据存储目录等,可根据服务器情况,动态调整,我们可以发现其默认配置的数据存储目录,就是在解压后的另一个文件夹sonatype-work

可以在nexus-3.58.1-02的etc目录下,查看nexus的启动配置信息

 

这里可以对Nexus启动监听的ip地址和端口进行配置,可以看出Nexus使用的是轻量级的jetty来提供Http服务的

 

 (1)使用管理员身份打开cmd命令行,然后进入到解压后的\nexus-3.58.1-02\bin该目录下

(2)执行安装nexus服务命令:nexus.exe /install

(3)执行启动nexus服务命令:nexus.exe /start

(4)执行启动nexus控制台服务命令:nexus.exe /run

        补充一下停止服务和卸载服务的命令:

        停止服务:nexus.exe /stop 

        卸载服务:nexus.exe /uninstall

第一次进入界面可能有一点慢

 这边需要你先登录一下,登录之后,很多东西就可以用了

第一次登录在对应目录下找到初始密码,然后更改密码

开启匿名访问 

禁止匿名访问

 图说详解

  

 

  

 Repositories

仓库管理。这里可以看到nexus的所有仓库

仓库主要分为三种类型:

  1. proxy,代理仓库,也就是对外部仓库的代理,这个仓库是只读的,当PC端访问Nexus库,没有依赖的时候,会请求proxy库配置的远程仓库,如远程仓库有,会下载到nexus(一个人从远程中央仓库下载好了依赖,其他人再次访问,无需访问远程仓库,直接从nexus可以获取),然后才会将nexus的返回给PC端。默认使用的maven的仓库,访问速度比较慢,可以跟换国内大型镜像仓库(比如阿里,腾讯等等,阿里nexus仓库地址:http://maven.liyun.com/repository/public);
  2. hosted,本地托管仓库,也就是所谓私库了,可以上传本地jar包到这个仓库。在创建的时候,需要注意:将Deployment policy改成Allow Redeploy (允许重复发布,覆盖同版本的jar包);
  3. group,仓库组,这是一个容器,它可以包含多个proxy,hosted或者其他group仓库,它的作用就是让开发人员引用的时候只需填一个URL,访问配置在该group下所有的库,这也是只读的。

hosted仓库存储类型分为三种:

  • snapshot,存储快照(未发布的版本)。
  • releases,存储发布的版本,
  • mixed,混合存储模式。

这里演示,创建一个本地仓库

 

Blob Stores

配置本地数据存储,或者云存储 (一般都是本地存储)

可以查看所有我们创建的blob存储,以及该blob数据信息;

可以创建自己的blob;

可以查看官方blob的使用文档;

 创建一个存储

 

 Proprietary Repositories

为了帮助依赖关系混淆攻击,请识别包含专有组件的托管存储库。

 

在刚创建的存储下创建一个本地仓库

 

public

 proxy

 https://maven.aliyun.com/repository/publicicon-default.png?t=N7T8https://maven.aliyun.com/repository/public也可以自己创建一个代理

 

 

结合Idea演示

项目配置(切记一定不要中文名,因为中文名有的时候会乱码

setting.xml配置

<server><id>自定义</id><username>账号</username><password>密码</password>
</server>
<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"><pluginGroups></pluginGroups><proxies></proxies><servers><server><id>coldwind</id><username>admin</username><password>admin</password></server></servers><mirrors><mirror><id>coldwind</id><name>cw</name><mirrorOf>*</mirrorOf><url>http://localhost:8081/repository/maven-public/</url></mirror><!--<mirror><id>ali</id><name>ali Maven</name><mirrorOf>*</mirrorOf><url>https://maven.aliyun.com/repository/public/</url></mirror>--></mirrors><profiles></profiles><activeProfiles></activeProfiles></settings>

需将项目指定setting文件,

或直接copy到本地idea仓库默认路径下

项目配置,Maven项目先配置上传URL

<distributionManagement><repository><id>coldwind</id><name>hoau release repository</name><url>http://localhost:8081/repository/maven-releases/</url></repository><snapshotRepository><id>coldwind</id><name>hoau snapshot repository</name><url>http://localhost:8081/repository/maven-snapshots/</url></snapshotRepository>
</distributionManagement>

本地项目打包

version默认为public,如果指定快照则加上如上代码 

 

雀实是我们刚刚上传的

 

 下载xml配置

<repositories><repository><id>coldwind-repo</id> <!-- 可以自定义 --><name>coldwind-repo</name><url>http://localhost:8081/repository/maven-public/</url> <!-- 通过public去下载依赖 --><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories>

添加引用

 <dependency><groupId>com.coldwind</groupId><artifactId>decrypt</artifactId><version>1.0-SNAPSHOT</version>
</dependency>

 刷Maven新项目

下载成功

现在就可以在另外一个项目使用这个包了 

这篇关于超详细 | 使用Nexus搭建私服 (带代码演示)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1048860

相关文章

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

Python极速搭建局域网文件共享服务器完整指南

《Python极速搭建局域网文件共享服务器完整指南》在办公室或家庭局域网中快速共享文件时,许多人会选择第三方工具或云存储服务,但这些方案往往存在隐私泄露风险或需要复杂配置,下面我们就来看看如何使用Py... 目录一、android基础版:HTTP文件共享的魔法命令1. 一行代码启动HTTP服务器2. 关键参

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符