超详细 | 使用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

相关文章

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

c# checked和unchecked关键字的使用

《c#checked和unchecked关键字的使用》C#中的checked关键字用于启用整数运算的溢出检查,可以捕获并抛出System.OverflowException异常,而unchecked... 目录在 C# 中,checked 关键字用于启用整数运算的溢出检查。默认情况下,C# 的整数运算不会自