超详细 | 使用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中Tkinter GUI编程详细教程

《Python中TkinterGUI编程详细教程》Tkinter作为Python编程语言中构建GUI的一个重要组件,其教程对于任何希望将Python应用到实际编程中的开发者来说都是宝贵的资源,这篇文... 目录前言1. Tkinter 简介2. 第一个 Tkinter 程序3. 窗口和基础组件3.1 创建窗

利用c++判断水仙花数并输出示例代码

《利用c++判断水仙花数并输出示例代码》水仙花数是指一个三位数,其各位数字的立方和恰好等于该数本身,:本文主要介绍利用c++判断水仙花数并输出的相关资料,文中通过代码介绍的非常详细,需要的朋友可以... 以下是使用C++实现的相同逻辑代码:#include <IOStream>#include <vec

C#中checked关键字的使用小结

《C#中checked关键字的使用小结》本文主要介绍了C#中checked关键字的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录✅ 为什么需要checked? 问题:整数溢出是“静默China编程”的(默认)checked的三种用

C#中预处理器指令的使用小结

《C#中预处理器指令的使用小结》本文主要介绍了C#中预处理器指令的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 第 1 名:#if/#else/#elif/#endif✅用途:条件编译(绝对最常用!) 典型场景: 示例

Java 接口定义变量的示例代码

《Java接口定义变量的示例代码》文章介绍了Java接口中的变量和方法,接口中的变量必须是publicstaticfinal的,用于定义常量,而方法默认是publicabstract的,必须由实现类... 在 Java 中,接口是一种抽象类型,用于定义类必须实现的方法。接口可以包含常量和方法,但不能包含实例

Mysql中RelayLog中继日志的使用

《Mysql中RelayLog中继日志的使用》MySQLRelayLog中继日志是主从复制架构中的核心组件,负责将从主库获取的Binlog事件暂存并应用到从库,本文就来详细的介绍一下RelayLog中... 目录一、什么是 Relay Log(中继日志)二、Relay Log 的工作流程三、Relay Lo

使用Redis实现会话管理的示例代码

《使用Redis实现会话管理的示例代码》文章介绍了如何使用Redis实现会话管理,包括会话的创建、读取、更新和删除操作,通过设置会话超时时间并重置,可以确保会话在用户持续活动期间不会过期,此外,展示了... 目录1. 会话管理的基本概念2. 使用Redis实现会话管理2.1 引入依赖2.2 会话管理基本操作

Springboot请求和响应相关注解及使用场景分析

《Springboot请求和响应相关注解及使用场景分析》本文介绍了SpringBoot中用于处理HTTP请求和构建HTTP响应的常用注解,包括@RequestMapping、@RequestParam... 目录1. 请求处理注解@RequestMapping@GetMapping, @PostMappin

mybatis-plus分表实现案例(附示例代码)

《mybatis-plus分表实现案例(附示例代码)》MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生,:本文主要介绍my... 目录文档说明数据库水平分表思路1. 为什么要水平分表2. 核心设计要点3.基于数据库水平分表注意事项示例

springboot3.x使用@NacosValue无法获取配置信息的解决过程

《springboot3.x使用@NacosValue无法获取配置信息的解决过程》在SpringBoot3.x中升级Nacos依赖后,使用@NacosValue无法动态获取配置,通过引入SpringC... 目录一、python问题描述二、解决方案总结一、问题描述springboot从2android.x