Maven 搭建私服

一、Maven 私服简介

1.1 私服简介

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

        当然也并不是说私服只能建立在局域网,也有很多公司会直接把私服部署到公网,具体还是得看公司业务的性质是否是保密的等等,因为局域网的话只能在公司用,部署到公网的话员工在家里也可以办公使用。

        建立了 Maven 私服后,当局域网内的用户需要某个构件时,会按照如下顺序进行请求和下载。此外,一些无法从外部仓库下载到的构件,也能从本地上传到私服供其他人使用。

        1、请求本地仓库,若本地仓库不存在所需构件,则跳转到第 2 步。

        2、请求 Maven 私服,将所需构件下载到本地仓库,若私服中不存在所需构件,则跳转到第 3

        3、请求外部的远程仓库,将所需构件下载并缓存到 Maven 私服,若外部远程仓库不存在所需构件,则 Maven 直接报错。

1.2 私服优势

        1、节省外网带宽,消除对外部远程仓库的大量重复请求(会消耗很大量的带宽),降低外网带宽压力。

        2、下载速度更快, Maven 私服位于局域网内,从私服下载构建更快更稳定。

        3、便于部署第三方构件,有些构件无法从任何一个远程仓库中获得(如:公司或组织内部的私有构件、Oracle JDBC 驱动等),建立私服之后,就可以将这些构件部署到私服中,供内部 Maven 项目使用。

        4、提高项目的稳定性,增强对项目的控制。如果不建立私服,那么 Maven 项目的构件就高度依赖外部的远程仓库,若外部网络不稳定,则项目的构建过程也会变得不稳定。建立私服后,即使外部网络状况不佳甚至中断,只要私服中已经缓存了所需的构件,Maven 也能够正常运行。私服软件(如:Nexus)提供了很多控制功能(如:权限管理、RELEASE/SNAPSHOT 版本控制等),可以对仓库进行一些更加高级的控制。

        5、降低中央仓库得负荷压力,由于私服会缓存中央仓库得构件,避免了很多对中央仓库的重复下载,降低了中央仓库的负荷。

1.3 私服产品

        1、ApacheArchiva

        2、JFrogArtifactory

        3、SonatypeNexus(当前最流行、使用最广泛)

二、Nexus 下载安装

2.1 下载

        下载地址在这,选择适合自己系统的版本,如下图:

2.2 安装

        下载完成后解压,进入到 bin 目录后,以管理员身份打开 cmd,执行 ./nexus /run 命令启动,如下图,第一次启动有点慢,需要一些时间。

        当出现以下的图标时就证明启动成功了,如下:

        在浏览器输入:http://localhost:8081/ ,用来访问首页,如下,

2.3 初始设置

        1、首先点击右上角的 Sign in ,如下:

        2、输入用户名和密码,用户名默认为 admin,密码在画框的文件里面存储,拿出来输入进去,如下:

        3、点击 next,输入自己的密码,继续点击 Next

        4、选择禁止用户匿名登录,如下图,继续点击 Next

        5、点击 Finish 安装成功

2.4  Nexus 上的各种仓库

        Nexus 会默认帮我们创建 7 个仓库,其中上面以 maven 开头的 4 个是我们使用的,下面的那三个是和 asp donet 相关的,我们用不上。

        接下来我们来介绍下这四个仓库,先从类型上介绍,如下

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

         接下来从仓库的功能来介绍下这四个仓库,如下:

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

        初始状态下,这几个仓库都是没有内容的,如下图:

2.5 通过 Nexus 下载 jar 包

        1、修改本地 maven 的核心配置文件 settings.xml,设置新的本地仓库地址

  <localRepository>E:\repo-new</localRepository>

        2、把我们原来配置阿里云仓库地址的 mirror 标签改成下面这样

<mirror><id>nexus-mine</id><mirrorOf>central</mirrorOf><name>Nexus mine</name><url>http://localhost:8081/repository/maven-public/</url>
</mirror>

        这里面的 url 标签是这么来的,如下图:

        把上图中看到的地址复制出来即可。如果我们在前面允许了匿名访问,到这里就够了。但如果我们禁用了匿名访问,那么接下来我们还要继续配置 settings.xml,如下

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

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

        4、打开 idea,看看 maven 的配置是否自动切换到新的库了,如下图,可以看到,实体库的路径自动切换过来了,证明我们修改的没有问题。

        5、随便找一个 maven 工程,执行 clean 命令,如下图

        可以看到,我们所依赖的 jar 包是从 nexus-mine 即我们指定的私服来下载的。整个流程是从中央仓库下载到私服,然后从私服下载到本地仓库,此时打开我们的私服,如下图,可以看到里面有一些依赖的插件了。

        若下载速度太慢,可以设置私服中中央仓库的地址为阿里云仓库地址

# 阿里云镜像地址
http://maven.aliyun.com/nexus/content/groups/public/

         6、此时我们再执行一次 package 操作,如下图,可以看到,我们的私服又下载了好多的依赖。

2.6 将 jar 包部署到 Nexus

        只需要在 maven 工程的 pom.xml 中配置如下的标签,这里的 snapshotRepository id 标签必须和 settings.xml 中指定的 mirror 标签的 id 属性一致。

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

        在 idea 中执行部署的命令 deploy,如下图:

        然后就可以在私服上面看见我们的上传的 jar 包了,如下图:

2.7 引用别人部署的 jar 包

        只需要在 maven 工程的 pom.xml 中配置如下的标签

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

        执行 package 操作,如下图所示

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

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

相关文章

网络部署实战具体学习内容总结

网络部署实战具体学习内容总结 &#x1f4bb;网络部署实战课程通常旨在教授学生如何规划、配置、维护和优化计算机网络。这些课程涵盖了广泛的主题&#xff0c;以确保学生具备网络部署和管理所需的技能。 网络部署实战课程具体学习内容&#x1f447; 1️⃣网络架构设计及网络原…

第一个Python程序_获取网页 HTML 信息[Python爬虫学习笔记]

使用 Python 内置的 urllib 库获取网页的 html 信息。注意&#xff0c;urllib 库属于 Python 的标准库模块&#xff0c;无须单独安装&#xff0c;它是 Python 爬虫的常用模块。 获取网页 HTML 信息 1) 获取响应对象 向百度&#xff08;http://www.baidu.com/&#xff09;发起…

九州金榜|孩子厌学是家庭教育原因还是学校教育原因?

孩子厌学&#xff0c;这是一个让所有家长的头疼的问题&#xff0c;尤其在看到别人家孩子是学霸的时候&#xff0c;就更会有种莫名其妙的伤感&#xff0c;然后回想自己的孩子&#xff0c;仿佛全都是缺点&#xff0c;家长要是有这种想法那就大错特错了&#xff0c;其实每个孩子都…

杨中科 .NETCORE EFCORE第七部分 一对一,多对多

一对一 一对一关系配置 1、builder.HasOne(o >o.Delivery).WithOne(d>d.Order).HasForeignKey(d>dOrderId); 2、测试插入和获取数据 示例 新建 Order 新建 Delivery DeliveryConfig OrderConfig 执行 迁移命令 查看数据库 测试数据插入 运行查看数据 多对多…

【Shell编程练习】编写 shell 脚本,打印 9*9 乘法表

系列文章目录 输出Hello World 通过位置变量创建 Linux 系统账户及密码 监控内存和磁盘容量&#xff0c;小于给定值时报警 猜大小 输入三个数并进行升序排序 编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态 系列文章目录编写 shell 脚本,打…

软件测试|如何使用selenium处理下拉框?

简介 下拉框是网页表单中常见的元素之一&#xff0c;通常用于选择不同的选项。对于我们的自动化测试工作来说&#xff0c;操作下拉框是我们经常需要处理的元素&#xff0c;selenium作为我们最常使用的web自动化测试框架&#xff0c;也是支持我们对下拉框进行操作的。本文我们就…

【问题+解决】axios/vue/element/echarts引入报错

缘由 笔者在html页面引用vue来快速实现页面&#xff1b;<head></head>中通过<script>src""></script>方法引入&#xff0c;开始引入&#xff0c;应用都是正常&#xff0c;后来用了也没问题&#xff1b;奇怪的是&#xff0c;前几天发现htm…

代码随想录算法训练营第6天 | 242.有效的字母异位词 , 349. 两个数组的交集 , 202. 快乐数 , 1. 两数之和

哈希知识基础 文章链接&#xff1a;https://programmercarl.com/%E5%93%88%E5%B8%8C%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html#%E5%93%88%E5%B8%8C%E8%A1%A8 242.有效的字母异位词 题目链接&#xff1a;https://leetcode.cn/problems/valid-anagram/description/…

Qt根据单价计算总价与进制转换

1.相关说明 二进制、十进制、十六进制间的相互转换 2.界面绘制 3.相关主要代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete …

路由黑洞和黑洞路由的区别

路由黑洞&#xff1a; 路由黑洞是一种现象&#xff0c;一般是在网络边界做汇总回程路由的时候产生的一种不太愿意出现的现象&#xff0c;就是汇总的时候有时会有一些不在内网中存在的网段&#xff0c;但是又包含在汇总后的网段中&#xff0c;如果在这个汇总的边界设备上同时还配…

【SQL】SQL语法小结

相关资料 参考链接1&#xff1a;SQL 语法&#xff08;超级详细&#xff09; 参考链接2&#xff1a;史上超强最常用SQL语句大全 SQL练习网站&#xff1a;CSDN、牛客、LeetCode、LintCode SQL相关视频&#xff1a; 推荐书籍&#xff1a; 文章目录 数据分析对SQL的要求SQL语法简介…

Android Traceview 定位卡顿问题

Traceview 是一个 Android 性能分析工具&#xff0c;用于时间性能分析&#xff0c;主要帮助开发者了解应用程序中各个方法的执行时间和调用关系。通过图形化界面查看应用程序的代码执行细节&#xff0c;包括每个方法的调用次数、方法调用的时间消耗、方法调用堆栈等信息。我们可…

Java、C#、Python间的Battle

一、编译原理和开发效率 编译速度&#xff1a; C# &#xff08;约大于等于&#xff09; JAVA > Python python的编译原理 前提&#xff1a;python 3.6 python不会直接编译源码 而是把源码直接扔给解释器&#xff0c;这种方式 使得python非常灵活&#xff0c;让它的开发效…

交通流量预测HSTGCNT:Hierarchical Spatio–Temporal Graph Convolutional

Hierarchical Spatio–Temporal Graph Convolutional Networks and Transformer Network for Traffic Flow Forecasting 交通流预测的层次时空图卷积网络和Transformer网络 Abstract 图卷积网络&#xff08;GCN&#xff09;具有图形化描述道路网络不规则拓扑结构的能力&#…

乳腺癌预测_EDA_Models

文章目录 **前言**数据介绍1.概述2.**关于数据集** 预测过程1.安装包2.加载库3.导入数据4.数据清洗5.EDA重复行缺失值单变量分析正态性检验双变量分析年龄与肿瘤大小(cm)肿瘤大小&#xff08;cm&#xff09;与诊断结果肿瘤大小&#xff08;cm&#xff09;与转移多元分析 6.预处…

QT软件在线安装与维护

一.安装 安装QT开发环境分离线安装和在线安装两种方式&#xff0c;具体步骤如下&#xff1a; QT官网注册账号----下载安装包-----安装-----选择要安装的版本与开发包----版本维护 注意&#xff1a;Qt5.14.2是最后提供二进制安装包的版本&#xff0c;后面的版本都需要在线安装…

Linux学习记录——사십일 高级IO(2)--- Select型服务器

文章目录 1、思路2、select接口3、实现1、准备工作2、实现等待多个fd3、辨别连接和简单处理读事件4、简单处理写、读事件 4、特点 1、思路 select就是多路转接IO。select能以某种形式&#xff0c;等待多个文件描述符&#xff0c;只要有哪个fd有数据就可以读取并全部返回。就绪…

P9852 [ICPC2021 Nanjing R] Windblume Festival 题解(SPJ)

[ICPC2021 Nanjing R] Windblume Festival 单击此处下载原神 题面翻译 给一个长度为 n n n 环形整数序列 a a a, 每次操作可以任意选择一个下标 x x x&#xff0c;令 $ a_x a_x - a_{(x\bmod n)1}$&#xff0c;之后移除 a ( x m o d n ) 1 a_{(x\bmod n)1} a(xmodn)1​…

.Net Core项目在linux部署实战 1.sdk下载 2.环境变量配置/ect/profile 3.运行

1)下载.net core sdk https://download.visualstudio.microsoft.com/download/pr/01292c7c-a1ec-4957-90fc-3f6a2a1e5edc/025e84c4d9bd4aeb003d4f07b42e9159/dotnet-sdk-6.0.418-linux-x64.tar.gz 2)配置下环境变量 step1: // 解压到指定目录 mkdir -p $HOME/dotnet &…

从零学Java 线程池

Java 线程池 文章目录 Java 线程池1 线程池概念1.1 现有问题1.2 线程池 2 线程池原理3 如何使用线程池3.1 获取线程池 4 创建线程的第四种方式 1 线程池概念 1.1 现有问题 线程是宝贵的内存资源、单个线程约占1MB空间&#xff0c;过多分配易造成内存溢出。频繁的创建及销毁线…