Maven私服

1 Maven私服简介

Maven 私服是一种特殊的Maven远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的远程仓库(中央仓库、其他远程公共仓库)。

1.1 下载构件顺序

建立私服后,当局域网内的用户需要某个构件时,会按照如下顺序进行请求和下载:

  • 第1步:请求本地仓库,若本地仓库不存在所需构件,则跳转到第 2 步;
  • 第2步:请求 Maven 私服,将所需构件下载到本地仓库,若私服中不存在所需构件,则跳转到第 3 步;
  • 第3步:请求外部的远程仓库,将所需构件下载并缓存到 Maven 私服,若外部远程仓库不存在所需构件,则 Maven 直接报错。

此外,一些无法从外部仓库下载到的构件,也能从本地上传到私服供其他人使用。

1.2 私服的优势
  • 节省外网带宽
    消除对外部远程仓库的大量重复请求,降低外网带宽压力。
  • 下载速度更快
    Maven私服位于局域网内,从私服下载构建更快更稳定。
  • 便于部署第三方构件
    有些构件无法从任何一个远程仓库中获得(如:公司或组织内部的私有构件、Oracle的JDBC驱动等),建立私服之后,就可以将这些构件部署到私服中,供内部Maven项目使用。
  • 提高项目的稳定性,增强对项目的控制
    如果不建立私服,那么Maven项目的构件就高度依赖外部的远程仓库,若外部网络不稳定,则项目的构建过程也会变得不稳定。建立私服后,即使外部网络状况不佳甚至中断,只要私服中已经缓存了所需的构件,Maven也能够正常运行。私服软件(如:Nexus)提供了很多控制功能(如:权限管理、RELEASE/SNAPSHOT版本控制等),可以对仓库进行一些更加高级的控制。
  • 降低中央仓库得负荷压力
    由于私服会缓存中央仓库得构件,避免了很多对中央仓库的重复下载,降低了中央仓库的负荷。
1.3 常见的Maven私服产品
  • Apache的Archiva
  • JFrog的Artifactory
  • Sonatype的Nexus(当前最流行、使用最广泛)

2 Nexus下载安装

在Nexus下载所需的安装包,并解压到按照路径下即可。
以管理员身份打开CMD,进入bin目录下,执行./nexus /run命令启动,启动成功如图所示:
在这里插入图片描述
访问 Nexus 首页,地址为http://localhost:8081/,8081为默认端口号。
在这里插入图片描述

2.1 Nexus登录

在这里插入图片描述
此处的用户名为admin,密码存储在nexus安装路径下admin.password文件中,如D:\DevProgramFiles\nexus-3.61.0-02-win64\sonatype-work\nexus3\admin.password文件中。
登录后的nexus设置:
在这里插入图片描述
设置新密码
在这里插入图片描述
设置是否匿名访问(禁用匿名访问)
在这里插入图片描述
完成配置:
在这里插入图片描述

2.2 Nexus中的仓库介绍

在这里插入图片描述

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

初始状态下,这几个仓库都没有内容。

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

3 通过Nexus下载jar包

3.1 配置仓库地址
  • 配置mirror镜像地址为当前的nexus仓库地址
    如果配置了其他的仓库地址,替换为如下配置。
<mirror><id>nexus-mine</id><mirrorOf>central</mirrorOf><name>Nexus mine</name><url>http://localhost:8081/repository/maven-public/</url>
</mirror>
3.2 设置访问用户和密码

由于不支持匿名访问,因此需要在settings.xml文件中的servers标签中配置访问的用户名和密码

<server><id>nexus-mine</id><username>admin</username><password>123456</password>
</server>

注意: server 标签内的 id 标签值必须和 mirror 标签中的 id 值一样。

3.3 jar包的上传和下载

此时mvn clean compile项目,会发现下载jar包并上传到nexus:

Downloading from nexus-mine: http://localhost:8081/repository/maven-public/org/codehaus/plexus/plexus-compiler-api/2.8.4/plexus-compiler-api-2.8.4.jar
Downloaded from nexus-mine: http://localhost:8081/repository/maven-public/commons-io/commons-io/2.5/commons-io-2.5.jar (209 kB at 11 kB/s)
Downloading from nexus-mine: http://localhost:8081/repository/maven-public/org/codehaus/plexus/plexus-compiler-manager/2.8.4/plexus-compiler-manager-2.8.4.jar
Downloaded from nexus-mine: http://localhost:8081/repository/maven-public/org/codehaus/plexus/plexus-compiler-manager/2.8.4/plexus-compiler-manager-2.8.4.jar (4.7 kB at 227 B/s)
Downloading from nexus-mine: http://localhost:8081/repository/maven-public/org/codehaus/plexus/plexus-compiler-javac/2.8.4/plexus-compiler-javac-2.8.4.jar
Downloaded from nexus-mine: http://localhost:8081/repository/maven-public/org/ow2/asm/asm/6.2/asm-6.2.jar (111 kB at 5.3 kB/s)
Downloaded from nexus-mine: http://localhost:8081/repository/maven-public/org/codehaus/plexus/plexus-java/0.9.10/plexus-java-0.9.10.jar (39 kB at 1.8 kB/s)
Downloaded from nexus-mine: http://localhost:8081/repository/maven-public/com/thoughtworks/qdox/qdox/2.0-M9/qdox-2.0-M9.jar (317 kB at 14 kB/s)
Downloaded from nexus-mine: http://localhost:8081/repository/maven-public/org/codehaus/plexus/plexus-compiler-api/2.8.4/plexus-compiler-api-2.8.4.jar (27 kB at 1.2 kB/s)
Downloaded from nexus-mine: http://localhost:8081/repository/maven-public/org/codehaus/plexus/plexus-compiler-javac/2.8.4/plexus-compiler-javac-2.8.4.jar (21 kB at 938 B/s)
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 3 source files to D:\DevWorkspace\IntelliJIDEAWS\giser-java\giser-java-common\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  05:16 min
[INFO] Finished at: 2023-12-23T20:45:41+08:00
[INFO] ------------------------------------------------------------------------

此时再次查看Nexus服务器,对应的仓库中就有了jar包了。如下:
在这里插入图片描述

3.4 更新中央仓库地址

上述下载实际上是通过Maven中央仓库下载,然后上传到nexus,再下载到本地的。为了提高下载速度,可以修改中央仓库地址为国内的镜像地址,如阿里云镜像地址。
在这里插入图片描述
将④处的地址改为阿里云镜像仓库地址:http://maven.aliyun.com/nexus/content/groups/public/
原始地址为:https://repo1.maven.org/maven2/

4 通过Nexus部署jar包

在Maven工程中配置如下信息:

<distributionManagement><snapshotRepository><id>nexus-mine</id><name>Nexus Snapshot</name><url>http://localhost:8081/repository/maven-snapshots/</url></snapshotRepository>
</distributionManagement>

**注意:**这里 snapshotRepository 的 id 标签必须和 settings.xml 中指定的 mirror 标签的 id 属性一致。
执行部署命令mvn deploy即可。

Uploading to nexus-mine: http://localhost:8081/repository/maven-snapshots/com/giser/giser-java-common/1.0-SNAPSHOT/giser-java-common-1.0-20231223.130426-1.pom
Uploaded to nexus-mine: http://localhost:8081/repository/maven-snapshots/com/giser/giser-java-common/1.0-SNAPSHOT/giser-java-common-1.0-20231223.130426-1.pom (1.7 kB at 4.5 kB/s)
Downloading from nexus-mine: http://localhost:8081/repository/maven-snapshots/com/giser/giser-java-common/maven-metadata.xml
Uploading to nexus-mine: http://localhost:8081/repository/maven-snapshots/com/giser/giser-java-common/1.0-SNAPSHOT/maven-metadata.xml
Uploaded to nexus-mine: http://localhost:8081/repository/maven-snapshots/com/giser/giser-java-common/1.0-SNAPSHOT/maven-metadata.xml (770 B at 1.1 kB/s)
Uploading to nexus-mine: http://localhost:8081/repository/maven-snapshots/com/giser/giser-java-common/maven-metadata.xml
Uploaded to nexus-mine: http://localhost:8081/repository/maven-snapshots/com/giser/giser-java-common/maven-metadata.xml (284 B at 361 B/s)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:53 min
[INFO] Finished at: 2023-12-23T21:04:29+08:00
[INFO] ------------------------------------------------------------------------Process finished with exit code 0

此时再次查看Nexus服务器,对应的仓库中就有部署的jar包了。如下:
在这里插入图片描述

4 引用jar包

在工程中配置仓库地址,如下:

<repositories><repository><id>nexus-mine</id><name>nexus-mine</name><url>http://localhost:8081/repository/maven-snapshots/</url><snapshots><enabled>true</enabled></snapshots><releases><enabled>true</enabled></releases></repository>
</repositories>

这样就可以通过坐标直接引用jar包了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/296332.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

〔002〕虚幻 UE5 发送 get、post 请求、读取 json 文件

✨ 目录 ▷ 安装 varest 扩展▷ 开启 varest 扩展▷ 发送 get 请求▷ 发送 post 请求▷ 读取 json 文件 ▷ 安装 varest 扩展 打开 虚幻商城&#xff0c;搜索 varest 关键字进行检索&#xff0c; varest 是一个 api 调用插件&#xff0c;支持 http/https 请求&#xff0c;也支…

力扣(leetcode)1148和1179题(MySQL)

1148.文章浏览I 题目链接&#xff1a;1148.文章浏览I 解答 # Write your MySQL query statement below select distinct author_id as id from Views where author_idviewer_id order by id;1179.重新格式化部门表 题目链接&#xff1a;1179.重新格式化部门表 解答 …

【小白攻略】php 小数转为百分比,保留两位小数的函数

php 小数转为百分比 首先&#xff0c;最简单直观的方法是利用PHP内置的number_format函数。该函数可以对一个数字进行格式化&#xff0c;并可以设置小数点后的精度。通过将小数乘以100&#xff0c;再用number_format函数将结果格式化为百分比形式&#xff0c;即可达到将小数转为…

网络监测之如何保障企业业务系统安全?

网络信息安全在网络时代的重要性不言而喻。随着互联网的普及和数字化进程的加速&#xff0c;网络已经成为人们生活、工作和学习的重要平台。在这个平台上&#xff0c;信息交流、数据存储、在线支付等都需要依赖于网络信息安全。其中企事业单位业务系统安全值得关注。 企事业单…

集合

1.Collection集合 1.1数组和集合的区别【理解】 相同点 都是容器,可以存储多个数据 不同点 数组的长度是不可变的,集合的长度是可变的 数组可以存基本数据类型和引用数据类型 集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类 1.2集合类体系结构【理解】…

深度学习中的池化

1 深度学习池化概述 1.1 什么是池化 池化层是卷积神经网络中常用的一个组件&#xff0c;池化层经常用在卷积层后边&#xff0c;通过池化来降低卷积层输出的特征向量&#xff0c;避免出现过拟合的情况。池化的基本思想就是对不同位置的特征进行聚合统计。池化层主要是模仿人的…

ESP8266网络相框采用TFT_eSPI库TJpg_Decoder库mixly库UDP库实现图片传送

用ESP8266和TFT_ESPI模块来显示图片数据。具体来说&#xff0c;我们将使用ILI9431显示器作为显示设备&#xff0c;并通过UDP协议将图片数据从发送端传输到ESP8266。最后&#xff0c;我们将解析这些数据并在TFT屏幕上显示出来。在这个过程中&#xff0c;我们将面临一些编程挑战&…

Java研学-Servlet 基础

一 概述 1 介绍 Servlet&#xff08;Server Applet&#xff09;是Java Servlet的简称&#xff0c;称为小服务程序或服务连接器&#xff0c;用Java编写的服务器端程序&#xff0c;具有独立于平台和协议的特性&#xff0c;主要功能在于交互式地浏览和生成数据&#xff0c;生成动…

nodejs微信小程序+python+PHP医疗机构药品及耗材信息管理系统-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

【星海随笔】keepalived(三)个人记录

上图是Keepalived的功能体系结构&#xff0c;大致分两层&#xff1a;用户空间&#xff08;user space&#xff09;和内核空间&#xff08;kernel space&#xff09;。 内核空间&#xff1a; 主要包括IPVS&#xff08;IP虚拟服务器&#xff0c;用于实现网络服务的负载均衡&#…

嵌入式硬件电路原理图之跟随电路

描述 电压跟随电路 电压跟随器是共集电极电路&#xff0c;信号从基极输入&#xff0c;射极输出&#xff0c;故又称射极输出器。基极电压与集电极电压相位相同&#xff0c;即输入电压与输出电压同相。这一电路的主要特点是&#xff1a;高输入电阻、低输出电阻、电压增益近似为…

Hago 的 Spark on ACK 实践

作者&#xff1a;华相 Hago 于 2018 年 4 月上线&#xff0c;是欢聚集团旗下的一款多人互动社交明星产品。Hago 融合优质的匹配能力和多样化的垂类场景&#xff0c;提供互动游戏、多人语音、视频直播、 3D 虚拟形象互动等多种社交玩法&#xff0c;致力于为用户打造高效、多样、…