当前位置: 首页 > news >正文

【Maven】008-Maven 私服搭建与使用

【Maven】008-Maven 私服搭建与使用

文章目录

  • 【Maven】008-Maven 私服搭建与使用
  • 一、概述
    • 1、简介
    • 2、建立私服后依赖查找和下载逻辑
      • 第一步:请求本地仓库
      • 第二步:请求 Maven 私服
      • 第三步:请求外部远程仓库(远程中央仓库等)
      • 参考图
    • 3、Maven 私服的优势
    • 4、Maven 私服常用的产品
  • 二、Nexus 下载、安装、初始设置
    • 1、下载
      • 地址
      • 目标
    • 2、安装
      • 第一步:解压到一个目录
      • 第二步:启动
      • 第三步:访问 `http://localhost:8081/`
    • 3、初始设置
      • 登录
      • 根据提示设置新密码
      • 禁用匿名登录
      • 初始化完成后
  • 三、Nexus 上的仓库
    • 1、仓库
    • 2、仓库类型&说明
    • 3、仓库名称&说明
    • 4、初始状态仓库内为空
  • 四、通过 Nexus 下载 jar 包
    • 1、将中央仓库地址设置为阿里云镜像地址
      • 第一步:选择要修改的仓库
      • 第二步:修改地址为阿里云镜像地址
      • 第三步:保存配置
    • 2、将本机 Maven 配置的阿里云镜像地址改成自己的私服地址
      • 第一步:拷贝自己的私服仓库地址
      • 第二步:修改本机 Maven 配置的阿里云镜像地址
      • 第三步:添加访问用户名密码
    • 3、通过 Nexus 下载 jar 包
      • 第一步:修改本机 Maven 仓库地址
      • 第二步:在 Maven 工程下执行 Maven 命令
      • 第三步:查看私服仓库
  • 五、将 jar 包部署到 Nexus
    • 1、Maven 工程中配置
    • 2、执行部署命令
      • 执行日志
      • 私服
  • 六、引用别人部署的 jar 包
    • 1、Maven 工程中配置
    • 2、打包日志

一、概述

1、简介

Maven私服(Repository Manager)是一个用于管理和分发构建制品(如JAR、WAR、POM文件等)的服务器。它允许团队在本地搭建一个中央存储库,用于保存和分享项目构建所需的依赖项。一些常见的Maven私服产品包括 Nexus、Artifactory 和 Apache Archiva 。

2、建立私服后依赖查找和下载逻辑

第一步:请求本地仓库

  • 当用户需要某个构件时,首先会检查本地仓库是否已经存在所需构件。
  • 如果本地仓库中已经有所需构件,系统将直接从本地仓库获取,无需进行远程请求。

第二步:请求 Maven 私服

  • 如果本地仓库中不存在所需构件,用户的请求将转向 Maven 私服。
  • Maven 私服会检查自身的仓库,如果存在所需构件,将其下载到本地仓库,并返回给用户。

第三步:请求外部远程仓库(远程中央仓库等)

  • 如果 Maven 私服也没有所需构件,系统将尝试从外部的远程仓库(通常是中央仓库)中获取。
  • 如果外部远程仓库存在所需构件,Maven 私服会将该构件下载并缓存到自身的仓库中,然后将构件返回给用户。
  • 如果外部远程仓库中也不存在所需构件,Maven 将报错,指示找不到所需的依赖项。

参考图

image-20231021164631791

3、Maven 私服的优势

  1. 加速构建过程: Maven 私服允许团队在本地搭建一个中央存储库,使得构建时可以优先从局域网内的私服获取依赖项,从而减少对外部远程仓库的依赖,加速构建过程。
  2. 降低对外部网络的依赖性: 私服允许团队在没有互联网连接或网络较差的情况下进行构建。依赖项的本地缓存和私服的存在减少了对外部网络的依赖性,提高了项目的可靠性。
  3. 统一依赖管理: 通过私服,团队可以统一管理和控制项目所需的依赖项版本,确保整个团队使用相同的构建制品,降低了版本冲突和不一致性的可能性。
  4. 安全性: 私服可以提供访问控制和安全认证机制,限制对仓库的访问,确保只有授权的人员能够发布和获取构建制品。这有助于保护项目的代码和依赖项的安全性。
  5. 本地镜像和缓存: 私服可以缓存外部远程仓库中的构建制品,降低了从外部仓库获取依赖项的延迟。此外,私服还可以配置为本地镜像,提供更快速的下载。
  6. 离线部署: Maven 私服支持离线部署,使得在没有互联网连接的环境中也能够构建和部署项目,适用于一些安全要求较高或隔离网络的场景。

4、Maven 私服常用的产品

  1. Nexus(当前最流行、使用最广泛):
    • Nexus 是 Sonatype 公司推出的一款流行的 Maven 私服产品。
    • 提供强大的仓库管理和安全性功能。
    • 支持多种仓库格式,包括Maven、npm、Docker等。
  2. Artifactory:
    • Artifactory是JFrog公司开发的另一款领先的构建制品仓库管理工具。
    • 支持各种包括 Maven、Gradle、npm 等的构建工具。
    • 具有高度可伸缩性和灵活的部署选项。
  3. Apache Archiva:
    • Apache Archiva 是由 Apache 软件基金会提供的开源 Maven 私服工具。
    • 提供基本的仓库管理功能,适用于小型项目或对简单配置有需求的团队。

二、Nexus 下载、安装、初始设置

1、下载

地址

https://help.sonatype.com/repomanager3/product-information/download

目标

image-20240114091800081

2、安装

第一步:解压到一个目录

image-20240114093016614

第二步:启动

使用管理员身份打开 CMD ,切换到 bin 目录。

命令:

  • 安装:nexus.exe /install bm-maven
  • 启动:nexus.exe /start bm-maven
  • 停止:nexus.exe /stop bm-maven
  • 卸载:nexus.exe /uninstall bm-maven

image-20240114094115157

第三步:访问 http://localhost:8081/

image-20240114094443971

3、初始设置

登录

用户名:admin

密码:(在 Nexus\sonatype-work\nexus3\admin.password )

image-20240114094610809

根据提示设置新密码

image-20240114094842314

禁用匿名登录

image-20240114094937996

初始化完成后

image-20240114095117223

三、Nexus 上的仓库

1、仓库

image-20240114095359248

2、仓库类型&说明

仓库类型说明
proxy某个远程仓库的代理
group存放:通过 Nexus 获取的第三方 jar 包
hosted存放:本团队其他开发人员部署到 Nexus 的 jar 包

3、仓库名称&说明

仓库名称说明
maven-centralNexus 对 Maven 中央仓库的代理
maven-publicNexus 默认创建,供开发人员下载使用的组仓库
maven-releasesNexus 默认创建,供开发人员部署自己 jar 包的宿主仓库 要求 releases 版本
maven-snapshotsNexus 默认创建,供开发人员部署自己 jar 包的宿主仓库 要求 snapshots 版本

4、初始状态仓库内为空

image-20240114095559491

四、通过 Nexus 下载 jar 包

1、将中央仓库地址设置为阿里云镜像地址

为了加快国内下载速度!

第一步:选择要修改的仓库

image-20240114095957773

第二步:修改地址为阿里云镜像地址

http://maven.aliyun.com/nexus/content/groups/public/

image-20240114100154731

第三步:保存配置

image-20240114100248443

2、将本机 Maven 配置的阿里云镜像地址改成自己的私服地址

第一步:拷贝自己的私服仓库地址

image-20240114100726978

第二步:修改本机 Maven 配置的阿里云镜像地址

image-20240114101058232

第三步:添加访问用户名密码

我们设置了禁止匿名访问!

这里需要格外注意:server 标签内的 id 标签值必须和 mirror 标签中的 id 值一样。

image-20240114132247729

3、通过 Nexus 下载 jar 包

第一步:修改本机 Maven 仓库地址

因为原本的仓库里面可能已经有很多内容了,为了直观,新建一个本地空仓库(一个空文件夹),让 Maven 直接向私服获取依赖!

image-20240114101533142

第二步:在 Maven 工程下执行 Maven 命令

mvn clean compile

部分下载过程日志:

......
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/org/codehaus/plexus/plexus-container-default/1.5.5/plexus-container-default-1.5.5.jar (217 kB at 42 kB/s)
Downloading from zibo-nexus-maven: http://localhost:8081/repository/maven-central/junit/junit/3.8.2/junit-3.8.2.jar
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/log4j/log4j/1.2.12/log4j-1.2.12.jar (358 kB at 63 kB/s)
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar (45 kB at 7.9 kB/s)
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.jar (134 kB at 23 kB/s)
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/junit/junit/3.8.2/junit-3.8.2.jar (121 kB at 21 kB/s)
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/com/google/collections/google-collections/1.0/google-collections-1.0.jar (640 kB at 89 kB/s)
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to D:\MyFile\IDEAProjects\mvn-demo\demo1\target\classes
[INFO]
[INFO] ---------------------------< com.zibo:demo2 >---------------------------
[INFO] Building demo2 1.0-SNAPSHOT                                        [3/3]
[INFO]   from demo2\pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ demo2 ---
[INFO] Deleting D:\MyFile\IDEAProjects\mvn-demo\demo2\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ demo2 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ demo2 ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to D:\MyFile\IDEAProjects\mvn-demo\demo2\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for mvn-demo 1.0-SNAPSHOT:
[INFO]
[INFO] mvn-demo ........................................... SUCCESS [  8.613 s]
[INFO] demo1 .............................................. SUCCESS [01:22 min]
[INFO] demo2 .............................................. SUCCESS [  0.079 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:31 min
[INFO] Finished at: 2024-01-14T13:26:44+08:00
[INFO] ------------------------------------------------------------------------

第三步:查看私服仓库

image-20240114132842488

五、将 jar 包部署到 Nexus

如出现问题,请调整下面配置。

1、Maven 工程中配置

注意:这里 repository 和 snapshotRepository 的 id 标签必须和 settings.xml 中指定的 mirror 标签的 id 属性一致。

<distributionManagement><!-- 部署正式版本(Release):mvn clean deploy --><repository><id>zibo-nexus-maven</id><name>zibo nexus maven releases</name><url>http://localhost:8081/repository/maven-releases/</url></repository><!-- 部署快照版本(Snapshot):mvn clean deploy -DrepositoryId=zibo-nexus-maven --><snapshotRepository><id>zibo-nexus-maven</id><name>zibo nexus maven</name><url>http://localhost:8081/repository/maven-snapshots/</url></snapshotRepository>
</distributionManagement>

2、执行部署命令

mvn deploy

执行日志

image-20240114134727474

私服

image-20240114134906341

六、引用别人部署的 jar 包

1、Maven 工程中配置

<dependencies><dependency><groupId>com.zibo</groupId><artifactId>demo1</artifactId><version>1.0.0</version></dependency>
</dependencies><repositories><repository><id>zibo-nexus-maven</id><name>zibo nexus maven</name><url>http://localhost:8081/repository/maven-releases/</url><releases><enabled>true</enabled></releases></repository>
</repositories>

2、打包日志

image-20240114140455255

相关文章:

【Maven】008-Maven 私服搭建与使用

【Maven】008-Maven 私服搭建与使用 文章目录 【Maven】008-Maven 私服搭建与使用一、概述1、简介2、建立私服后依赖查找和下载逻辑第一步&#xff1a;请求本地仓库第二步&#xff1a;请求 Maven 私服第三步&#xff1a;请求外部远程仓库&#xff08;远程中央仓库等&#xff09…...

TMDB电影数据分析(下)

TMDB电影数据分析&#xff08;下&#xff09; 本文对源自Kaggle TMDB电影数据集进行分析影响电影票房的因素&#xff0c;数据分析流程包含数据集概分析、数据清洗、数据统计以及分析影响电影票房的因素。影响票房因素可能是电影预算、电影类型、电影时长、受欢迎程度、电影评分…...

django后台手机号加密存储

需求&#xff1a; 1 &#xff1a;员工在填写用户的手机号时&#xff0c;直接填写&#xff0c;在django后台中输入 2&#xff1a;当员工在后台确认要存储到数据库时&#xff0c;后台将会把手机号进行加密存储&#xff0c;当数据库被黑之后&#xff0c;手机号字段为加密字符 3&am…...

三、Qt Creator 使用

关于Qt的安装及环境配置&#xff0c;在我的上一篇《二、QT下载、安装及问题解决(windows系统)》已经讲过了。 本章节有一个重点&#xff0c;在新建 工程文件时&#xff0c;所在路径不要有中文&#xff0c;否则编译及运行程序不能正常运行。 在使用Qt Creator&#xff08;以下…...

css 边框渐变

需求&#xff1a; 普通的div 边框不好看&#xff0c;做一个渐变色 进程&#xff1a; 最简单的当然是做一个内部是白色的边框是渐变色的图&#xff0c;然后使用 background: url("back.jpg")&#xff0c;这样看起来就像是做了一个渐变的边框如果做不了图&#xff0…...

SofaMQ一些常用的API

SofaMQ的十五种常用的API 引言 SofaMQ作为阿里巴巴开源的消息中间件&#xff0c;提供了丰富的API以支持各种消息传递场景。在本文中&#xff0c;我们将介绍SofaMQ的十五种常用API&#xff0c;并通过实例演示其用法。 1. Producer相关API 1.1 SofaMQProducer SofaMQProduce…...

IIS 缓存, 更新后前端资源不能更新问题

解决办法: 通常只需要index.html 不缓存即可, 其他文件都是根据index.html 中的引用去加载; 正确的做法是在 站点下增加 web.config 文件, 内容如下: 我这个是因为目录下有个config.js 配置文件, 也不能缓存, 所以加了两个 <?xml version"1.0" encoding&quo…...

中科院罗小舟团队提出 UniKP 框架,大模型 + 机器学习高精度预测酶动力学参数

作者&#xff1a;李宝珠 编辑&#xff1a;三羊 中国科学院深圳先进技术研究院罗小舟团队提出了&#xff0c;基于酶动力学参数预测框架 (UniKP)&#xff0c;实现多种不同的酶动力学参数的预测。 众所周知&#xff0c;生物体内的新陈代谢是通过各种各样的化学反应来实现的。这…...

组件中写选项的顺序(vue的问题)

为什么选项要有统一的书写顺序呢&#xff1f;很简单&#xff0c;就是要将选择和认知成本最小化。 副作用 (触发组件外的影响) el全局感知 (要求组件以外的知识) nameparent组件类型 (更改组件的类型) functional模板修改器 (改变模板的编译方式) delimiterscomments模板依赖 (…...

LUA 对象转excel

1. 首先把LUA 转成JSON 对象 因为是excel, 所以第一层要是数组&#xff0c;否则没有什么意义&#xff0c;即lua对象要是一个数组比较合理。这里使用开源的json.lua&#xff0c; 但是开源的&#xff0c;对于数字作下标的&#xff0c;或者是一个数组里&#xff0c;不同类型的key…...

深入理解 Flink(八)Flink Task 部署初始化和启动详解

JobMaster 部署 Task 核心入口&#xff1a; JobMaster.onStart();部署 Task 链条&#xff1a;JobMaster --> DefaultScheduler --> SchedulingStrategy --> ExecutionVertex --> Execution --> RPC请求 --> TaskExecutor TaskExecutor 处理 JobMaster 的 …...

openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_DSA_paramfromdata.c

文章目录 openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_DSA_paramfromdata.c概述笔记END openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_DSA_paramfromdata.c 概述 开源工程包含的头文件类型是.inc, 要重命名为.h, 否则没有c头文件语法提示 从数组中载入大数p,q,g 建立ossl…...

【k8s】Kubernetes技术和相关命令简介

一、 Kubernetes简介 Kubernetes是Google开源的一个容器编排引擎&#xff0c;它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时&#xff0c;通常要部署该应用的多个实例以便对应用请求进行负载均衡。kubernetes&#xff0c;简称K8s&#xff0…...

清晰光谱空间:全自动可调波长系统的高光谱成像优势

高光谱成像技术 高光谱成像技术是一种捕获和分析宽波长信息的技术&#xff0c;能够对材料和特征进行详细的光谱分析和识别。高光谱成像技术的实现通过高光谱相机&#xff0c;其工作原理是使用多个光学传感器或光学滤波器分离不同波长的光&#xff0c;并捕获每个波段的图像&…...

23.实战演练--个人主页

<?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"><applicationandroid:allowBackup"true"an…...

[剪藏] - 任泽平年终演讲精华:点燃希望——2024中国经济十大预测

任泽平年终演讲精华&#xff1a;点燃希望——2024中国经济十大预测 泽平宏观 2023-12-23 08:01 发表于上海 12月22日22:30&#xff0c;任泽平年终秀“点燃希望乐观者前行——2024中国经济十大预测”圆满收官。 泽平宏观、北京广播电视台、上海高净值研究院、北京时间等携手打…...

基于LabVIEW的压力传感器测试系统

摘要 现在各类压力传感器已广泛应用于各种工业自控环境&#xff0c;对压力传感器的研究 及应用&#xff0c;既可以体现一个国家的科技发展水平&#xff0c;又可以提升国家的综合国力&#xff0c;还 可以在丰富、方便和智能化人们的生活方面做出重要的贡献。而针对不同仪器组 成…...

Vue 如何使用WebSocket与服务器建立链接 持续保持通信

WebSocket 浏览器通过JavaScript向服务器发出建立WebSocket链接的请求&#xff0c;链接建立后&#xff0c;客户端和服务器端就可以通过TCP链接直接交互数据。WebSocket链接后可以通过send()方法来向服务器发送数据&#xff0c;并通过onnessage事件来接受服务器返回的数据。 创…...

自动驾驶模拟器

目录 Carla 自动驾驶模拟器 Udacity自动驾驶模拟器 Carla 自动驾驶模拟器 pip install carla 需要下载地图 Udacity自动驾驶模拟器...

Jmeter的文件参数化:CSV数据文件设置和_CSVRead函数

一、CSV数据文件设置 1、简介 CSV数据文件配置&#xff08;CSV Data Set Config&#xff09;可以将CSV文件中数据读入自定义变量中 Jmeter中CSV数据文件配置的界面如下图所示&#xff1a; 其中&#xff1a; &#xff08;1&#xff09;文件编码 文件的编码格式&#xff0c;与所…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API&#xff0c;让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API&#xff0c;你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...

从零开始了解数据采集(二十八)——制造业数字孪生

近年来&#xff0c;我国的工业领域正经历一场前所未有的数字化变革&#xff0c;从“双碳目标”到工业互联网平台的推广&#xff0c;国家政策和市场需求共同推动了制造业的升级。在这场变革中&#xff0c;数字孪生技术成为备受关注的关键工具&#xff0c;它不仅让企业“看见”设…...

ArcPy扩展模块的使用(3)

管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如&#xff0c;可以更新、修复或替换图层数据源&#xff0c;修改图层的符号系统&#xff0c;甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...

项目进度管理软件是什么?项目进度管理软件有哪些核心功能?

无论是建筑施工、软件开发&#xff0c;还是市场营销活动&#xff0c;项目往往涉及多个团队、大量资源和严格的时间表。如果没有一个系统化的工具来跟踪和管理这些元素&#xff0c;项目很容易陷入混乱&#xff0c;导致进度延误、成本超支&#xff0c;甚至失败。 项目进度管理软…...

LINUX编译vlc

下载 VideoLAN / VLC GitLab 选择最新的发布版本 准备 sudo apt install -y xcb bison sudo apt install -y autopoint sudo apt install -y autoconf automake libtool编译ffmpeg LINUX FFMPEG编译汇总&#xff08;最简化&#xff09;_底部的附件列表中】: ffmpeg - lzip…...