超详细 | 使用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系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤